如何返回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; }
我发现“结果”是一个空string。 所以,我试过这个:
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?
请记住,在someFunction完成工作后,onComplete被调用很长时间。 你需要做的是将一个callback函数作为parameter passing给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”? 在我的情况下,它运作良好:)