在脚本需要一段时间加载时,我遇到了一些问题,因为调用了ajax错误函数.但我能够通过添加来修复它async: false.
例如:
$.ajax({
type: 'POST',
url: REQUEST_URL,
async: false,
data: {
'id': id
},
dataType: 'json',
success: function(output) {
// success
},
error: function() {
alert('Error, please refresh the page');
}
});
Run Code Online (Sandbox Code Playgroud)
在阅读文档时,它说:
默认情况下,所有请求都是异步发送的(默认情况下设置为true).如果需要同步请求,请将此选项设置为false.跨域请求和dataType:"jsonp"请求不支持同步操作.请注意,同步请求可能会暂时锁定浏览器,并在请求处于活动状态时禁用任何操作.从jQuery 1.8开始,不推荐使用async:false和jqXHR($ .Deferred); 您必须使用完整/成功/错误回调.
问)最后一部分对jqXHR($ .Deferred)的意义是什么?这会影响我的脚本吗?
它不会影响您的脚本.
这意味着,在执行同步AJAX请求时,不应使用由返回的对象(例如done()或fail())公开的延迟 API ,而是依赖于和处理程序.$.ajax()completeerror
换句话说,您的代码已经使用了正确的模式.如果使用延迟操作,则必须修改它,例如:
// Do not write this code.
$.ajax({
type: 'POST',
url: REQUEST_URL,
async: false, // <-- Synchronous request.
data: {
'id': id
},
dataType: 'json'
}).done(function(output) { // <-- Use of deferred method.
// success
}).fail(function() { // <-- There also.
alert('Error, please refresh the page');
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1918 次 |
| 最近记录: |