Я использую прототип, чтобы сделать мое развитие AJAX, и я использую такой код:Как вернуть текст ответа AJAX?
somefunction: function(){
var result = "";
myAjax = new Ajax.Request(postUrl, {
method: 'post',
postBody: postData,
contentType: 'application/x-www-form-urlencoded',
onComplete: function(transport){
if (200 == transport.status) {
result = transport.responseText;
}
}
});
return result;
}
И я считаю, что «результат» пустая строка. Итак, я пробовал это:
somefunction: function(){
var result = "";
myAjax = new Ajax.Request(postUrl, {
method: 'post',
postBody: postData,
contentType: 'application/x-www-form-urlencoded',
onComplete: function(transport){
if (200 == transport.status) {
result = transport.responseText;
return result;
}
}
});
}
Но это тоже не сработало. Как я могу получить responseText для использования другого метода?
Ваш ответ замечательный, более функциональный/oop-стиль, и действительно, действительно замечательный. Тем не менее, [кто-то] ответил на это: асинхронный: ложь более легкая и облегчает то, что хотел автор вопроса (но ваше решение более расширяемо и гибко). –
асинхронный: false останавливает браузер до получения ответа. Если сетевое подключение выполняется медленно, поэтому для соединения с сервером требуется несколько секунд, тогда весь браузер может зависнуть на несколько секунд и не будет отвечать на ввод пользователя. Это не удобство использования. Это может быть проще, но оно не ведет себя хорошо, и поэтому ** 'асинхронный: false' никогда не должен использоваться **. – Marius
Извините, я раньше не использовал асинхронный. Вы правы, так что это в основном то же самое, что и функция ajaxLoader() {var fAjaxLoaded = false; $. Ajax (..., success: function() {fAjaxLoaded = true;}); while (fAjaxLoaded); return ...} ' –