我想知道为什么在 i 变量下面的代码中 仍然显示“ 5” 而不是显示 “ 1” 然后 “ 2” 然后 “ 3” ,依此类推?必须是一个范围问题,但由于在全局和dom范围中更改了i变量的范围,但仍然遇到相同的问题,因此我并没有真正了解它。当我提醒 我 的AJAX功能外,它工作得很好。
for (var i = 0; i < 5; i++) { $.ajax({ url: '/echo/html/', method:'post', data: { html: 'Ajax data' }, success: function (resp) { $('#success').append(i) // always 5 } }) $('#outsideAjax').append(i); // is okay }
这是小提琴
编辑:
我选择了 @Tushar Gupta 解决方案,因为它最适合我的需要,但是又遇到了另一个问题,如果设置此选项,则迭代将无法进行: processData:false
看到小提琴
为什么这不起作用?
[**fiddle Demo**](http://jsfiddle.net/cse_tushar/6RfRp/)
var i = 0; function ajax_call() { $.ajax({ url: '/echo/html/', method: 'post', data: { html: 'Ajax data' }, success: function (resp) { $('#success').append(i++); if (i < 5) { ajax_call(); } } }); $('#outsideAjax').append(i); }; ajax_call();