有没有办法在浏览器开发工具中确认特定的ajax请求是异步还是同步,例如Chrome Developer Tools或Firebug。
对于ajax请求,HTTP请求标头不指示其同步还是异步。
X-请求-随着:XMLHttpRequest的
答案 0 :(得分:6)
不,你不能这样做,但你可以在控制台中运行它或将其添加到你的代码
XMLHttpRequest.prototype.open = (function(open){
return function(method, url, async, user, password) {
console.log("xhr call: "+url +"isAsync: "+async);
open.apply(this, arguments);
};
})(XMLHttpRequest.prototype.open);
它记录了信息:D希望它有用
答案 1 :(得分:2)
我不知道您是否还在寻找答案,但我希望这会对某人有所帮助!
在Chrome浏览器中,导航至rightClick / inspect / networkTab / xhr?将光标移动到处理您的请求的时间,如下图所示:
这是我的异步代码(默认ajax)
`$.ajax({
type: "GET",
contentType: "application/json", // data type of request
url: //url,
data: //data,
dataType: "json", // data type of response
success: function (result) {
// some code here
}
});`
我正在对本地主机进行一系列ajax调用,每个调用都链接到上一个调用的响应。但是我得到了错误的输出,因为所有ajax请求都几乎同时发送,并且本应顺序接收的响应(蓝色)混乱了。下面的时序图完美地显示了该问题(请查看“瀑布”选项卡)。
这是我的同步呼叫代码(异步:ajax中为false)
$.ajax({
async: false,
type: "GET",
contentType: "application/json", // data type of request
url: //url,
data: //data,
dataType: "json", // data type of response
success: function (result) {
// some code here
}
});
现在如何知道async:false是否有效?
您可以看到,异步模式下的ajax调用时间彼此重叠,同步模式下的调用时间(async:false)也明显不同,从而证明了同步调用[async:false]可以正常工作。如果时间仍然重叠,则与我的情况不同,同步调用可能无法正常工作。
答案 2 :(得分:-3)
如果指定为同步的话,所有ajax请求都是异步的,因此他们称之为异步JavaScript和XML (AJAX)。要使ajax请求同步,你必须在XMLHTTPRequest对象的open方法中传入false,如下所示
var xhr = new XMLHttPRequest();
xhr.open("POST", "file to get.php", false);
第三个参数将其指定为同步但默认为true