我有一个基于Ajax的应用程序,有时需要基于jquery选择器同时获取多个值。这适用于所有浏览器,但在Firefox中有一个怪癖:一些响应处理程序在奇怪的上下文中运行,从而引起一些怪异:
所有这些症状使我相信响应处理程序不在正常的单线程javascript引擎上运行。这几乎就像是被移植到线程池之类的东西,但是我找不到任何表明这一点的文档。那么,我的问题是:这是Firefox中的错误,还是我应该做一些事情来确保我的所有响应处理程序都在同一上下文中运行?
这是一个小提琴,演示了我的问题。如果您在打开开发工具的情况下在Chrome中运行它,它将在显示每个警报之前达到断点。但是在Firefox中,总是会立即显示一个警报,并且您只会碰到一个断点。
http://jsfiddle.net/dfaonyku/11/
$(document).ready(function() {
$('div').each(function() {
$.ajax({
url: '/echo/json/',
data: {
json: JSON.stringify({'id': this.id}),
},
type: 'POST',
success: function(response, status, xhr) {
//console.log(response);
debugger;
alert(response.id);
}
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="foo">
</div>
<div id="bar">
</div>