所以我有这段代码:
$.ajax({
xhr: function() {
var xhr = new window.XMLHttpRequest();
xhr.addEventListener("progress", function(evt) {
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
console.log(percentComplete);
}
}, false);
return xhr;
},
dataType: "jsonp",
contentType: "text/javascript charset-utf-8",
url: "http://*******.com/pcm/datamobile.asmx/ObtenerContactos",
crossDomain: true,
timeout:8000000,
data: {sessionId: 1},
error : function (xhr, status) {
},
success : function() {FirstAjaxReady();}
});
}
xhr:选项中的函数永远不会触发。我正在尝试获取有关请求的进度报告。这可能与跨域这一事实有关。如果是这样,有没有办法在跨域Ajax请求中获得进度报告?
答案 0 :(得分:1)
还需要在服务器端启用Crossdomain或Cross-Origin
http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing
CORS安全确实似乎要求不会发送进展:
CORS API规范还需要确保不泄露任何内容 直到跨源请求状态设置为预检完成或 成功防止例如端口扫描。
在XMLHttpRequest中,仅在调度后调度进度事件 跨源请求状态设置为成功。上传进度事件 仅在跨源请求状态为预检时才被调度 完整。
如果我正确地阅读。