Ajax不能以同步方式工作

时间:2011-10-17 10:30:02

标签: javascript prototypejs

我正在使用prototype.js来发出Ajax请求。一切正常,直到我将asynchronous更改为false(因为我想要进行同步请求)。以下是我的代码中的几行。

    var commOptions = {
                contentType: 'text/xml',
                method: 'post',
                asynchronous: true,
                evalJS: false,
                evalJSON: false
            };   
   sProxy_Url = sUrl;  
   new Ajax.Request(sProxy_Url, commOptions);   

如果我将asynchronous更改为false,则Ajax不起作用。我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

老实说,我没有看到什么不起作用,我甚至在javascript中得到了回应以确保:

var commOptions = {
                contentType: 'text/xml',
                method: 'post',
                asynchronous: false,
                evalJS: false,
                evalJSON: false
            };   

   var a = new Ajax.Request("/", commOptions);
console.log( a.transport.responseText.length ); //16898

http://jsfiddle.net/HRu78/1/

答案 1 :(得分:0)

总是建议使ajax请求异步,因为使它们同步将阻止主JavaScript线程,这提供了糟糕的用户体验(参见this)。

但是,如果您真的想使用同步选项,则需要更清楚地了解运行代码时发生的情况 - 浏览器阻止了吗?或者函数是否返回但没有数据?