Как вернуть текст ответа AJAX? [дубликат]



На этот вопрос уже есть ответ здесь:



Я использую prototype для разработки 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 для другого метода, чтобы использовать?

645   2  

2 ответов:

Помните, что 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);
});

Как насчет добавления "asynchronous: false" в ваш код? В моем случае это сработало хорошо:)

Comments

    Ничего не найдено.