如何返回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”? 在我的情况下,它运作良好:)