Как вернуть текст ответа 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 для использования другого метода?
Ответы
Ответ 1
помните, что onComplete вызывается долго после выполнения функции someFunction. Что вам нужно сделать, так это передать функцию обратного вызова функции somefunction в качестве параметра. Эта функция будет вызываться, когда процесс будет выполнен (т.е. onComplete):
somefunction: function(callback){
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;
callback(result);
}
}
});
}
somefunction(function(result){
alert(result);
});
Ответ 2
Как насчет добавления "асинхронного: false" в ваш код? В моем случае это сработало хорошо:)