我有一个测试页面使用 Ajax 向服务器发出 http“删除”请求。以下 JS 代码在 IE7 中按预期工作,但在 Firefox 中不起作用(除非我将 ajax 调用设为异步)。
在 Firefox 中,除非 async 为 false,否则错误回调会以状态 0 触发。
- 如果调用是同步的,谁能协助解释为什么这在 Firefox 中显然有效?
- 在此页面的上下文中,同步调用不是坏事,但我读到应该避免这种情况,因为这会有效地卡住浏览器窗口,直到响应返回。有任何人可以建议的替代解决方案吗?
相关代码如下:-
<script src="${url.context}/scripts/jquery-1.3.2.min.js"></script>
<SCRIPT LANGUAGE="JavaScript">
jQuery.noConflict();
function deleteImage(nodeParam) {
alert('hello');
var options = {
type: 'DELETE',
async: false,
url: '${url.context}/service/api/asset/delete?alf_ticket=${session.ticket}'+'&format=text'+'&'+nodeParam,
dataType: 'json',
success: function(data, textStatus) {
jQuery('#result-div').html('');
if (data['ok'] == true) {
//jQuery('#result-div').html('Delete successful using parameter - ' + nodeParam);
alert("Delete successful" );
} else {
alert( "Response 'ok' set to 'false' on success callback!" );
jQuery('#result-div').html('Delete failed!');
}
},
error: function (request, textStatus, errorThrown) {
//jQuery('#result-div').html('Delete failed!');
alert("Delete Failed");
alert(request.status);
//alert("Error callback triggered, request failed with status: " + request.status + ' ' + request.responseText);
}
};
jQuery.ajax(options);
}
// End -->
</script>
谢谢 J
最佳答案
Firefox 不会为同步请求调用 onreadystatechange,因此 jQuery 可能因此无法调用您的自定义回调。否则发出同步请求通常是个坏主意。
关于javascript - 'delete' 的 Ajax 成功回调未在 Firefox 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3297741/