tra*_*nte 10 javascript ajax jquery
我读完所有这些类似的问题:1,2,3,4,5和6.但我需要调试更多.
所有这些问题都表明问题是由跨域政策引起的并且e.preventDefault()解决了问题.但我怀疑这可以打破其他一些事情,所以我需要确定.
在我的网站上,我有一个每天被发射15k次的操作.当用户访问网页时,我的javascript文件会检查一个元素.如果元素存在,则进行AJAX调用.
$(document).ready(function() {
// I do something here
if ($('#mydiv').length !== 0) {
var startTime = new Date().getTime();
$.ajax({
type: "POST",
url: "/mypage",
success: function (data) {
// I do something here
},
timeout: 20000,
error: function(r, s, e) {
var elapsedTime = (new Date().getTime() - startTime );
var string = "readyState: "+r.readyState+", status: "+r.status+", statusText: "+r.statusText+", responseText: "+r.responseText+", textStatus: "+s+", error: "+e +", elapsedTime: "+elapsedTime;
// send this string to server for logging
formData = {string:string};
$.ajax({
url : "/mylog",
type: "POST",
data : formData
});
}
});
}
// I do something here
});
Run Code Online (Sandbox Code Playgroud)
对于15k请求,~70次用户获得AJAX错误.~20是因为超时.~50是由于未知错误.当我检查客户端的日志时,我看到AJAX请求为未知错误提供了这些值:readyState: 0, status: 0 and statusText: error
虽然建议针对此问题使用e.preventDefault().我需要知道用户为此错误做了什么.在我的javascript文件中,我没有提出任何跨域请求.但我不知道用户为此错误做了什么?是否可以了解更多此错误?
注意:我跟踪"AJAX调用开始"和"AJAX错误"之间的时间.平均时间为1500-2000毫秒.
编辑:如果我使用preventDefault(),我可以在哪里放?因为我没有注册点击功能等.
编辑2:这个页面说明了这个:
我们发现,如果ajax请求在完成之前被取消,则可能会发生这种情况.如果我们触发了ajax请求,然后立即点击链接导航离开页面,我们就可以重现问题.当用户通过刷新,单击链接或更改浏览器中的URL导航离开页面时,jQuery会抛出错误事件.
但是我无法通过在加载AJAX时单击某个链接来重现该问题.
小智 4
解决了。
我面临着同样的问题。当 ajax 调用后存在重定向时,会出现此问题。
损坏的代码:
$.ajax({
url: '',
dataType: 'jsonp',
success: function (json) {
// do stuff here
},
error: function (error) {
// do stuff here
}
});
window.location.href = "www.google.com";
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,ajax 之后有重定向,这会给出就绪状态 0 的错误。
解决方案: 收到一些响应后编写重定向。我写完了。
$.ajax({
url: '',
dataType: 'jsonp',
success: function (json) {
// do stuff here
},
error: function (error) {
// do stuff here
},
complete: function () {
window.location.href = "www.google.com";
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17752 次 |
| 最近记录: |