Javascript Ajax不能以同步方式工作

Javascript Ajax不能以同步方式工作,javascript,prototypejs,Javascript,Prototypejs,我使用prototype.js发出Ajax请求。在我将asynchronous更改为false(因为我想发出同步请求)之前,一切都很正常。下面是我代码中的几行 var commOptions = { contentType: 'text/xml', method: 'post', asynchronous: true, evalJS: false,

我使用
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将无法工作。我遗漏了什么吗

通常建议将ajax请求设置为异步,因为将它们设置为同步会阻塞主JavaScript线程,这会带来糟糕的用户体验(请参阅)


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

通常建议将ajax请求设置为异步,因为将其设置为同步会阻塞主JavaScript线程,从而导致用户体验不佳(请参阅)


但是,如果您真的想使用同步选项,那么您需要更清楚地了解在运行代码时发生了什么-浏览器是否会阻塞?还是函数返回但没有数据?

老实说,我看不出有什么不起作用,我甚至得到了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

老实说,我不知道什么不起作用,我甚至得到了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

define not working,因为它在这里工作@Esailija:I Ajax调用会给出HTML响应。如果我将
asynchronous
更改为
false
我看不到任何响应。将代码添加到您应该处理问题响应的位置,因为JSFIDLE与您提供的代码配合得很好。定义不起作用,因为它在这里起作用@Esailija:I Ajax调用会给出HTML响应。如果我将
asynchronous
更改为
false
我看不到任何响应。将代码添加到您应该处理问题响应的位置,因为JSFIDLE与您提供的代码配合得很好。我必须同步使用它。当我进行同步调用时,我得到的响应没有数据。我认为tinyd说的“您需要更清楚一点”意味着他需要知道您读取的属性、返回的HTTP状态代码是什么,甚至可能需要粘贴所有相关代码。不工作需要多长时间?是瞬间的吗?@thomasrutter-是的,这就是我的意思,好吧!Ajinkya-值得在Firebug(或Chrome,或IE)日志中查看请求是否被发送。另外,你能说你在哪些浏览器中看到了错误吗?我必须同步使用它。当我进行同步调用时,我得到的响应没有数据。我认为tinyd说的“您需要更清楚一点”意味着他需要知道您读取的属性、返回的HTTP状态代码是什么,甚至可能需要粘贴所有相关代码。不工作需要多长时间?是瞬间的吗?@thomasrutter-是的,这就是我的意思,好吧!Ajinkya-值得在Firebug(或Chrome,或IE)日志中查看请求是否被发送。另外,你能说出你在哪些浏览器中看到了错误吗?很高兴你能正常工作。我不是在告诉你如何设计你的应用程序,但根据我的经验,每当我认为我确实需要使用同步时,总是会发现有一种异步方式做得更好。我会尝试以异步方式完成它。谢谢你的建议。很高兴你的建议奏效了。我不是在告诉你如何设计你的应用程序,但根据我的经验,每当我认为我确实需要使用同步时,总是会发现有一种异步方式做得更好。我会尝试以异步方式完成它。谢谢你的建议。