javascript – Google Chrome:XMLHttpRequest.send()在执行POST时无法正常工作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Google Chrome:XMLHttpRequest.send()在执行POST时无法正常工作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1755字,纯文字阅读大概需要3分钟。
内容图文
我正在开发一个应用程序,允许用户使用表单(POST请求)发送文件,并在上载该文件时执行一系列GET请求以收集有关上载状态的信息.
它在IE和Firefox中运行良好,但在Chrome和Safari中却没有那么多.
问题是即使在XMLHttpRequest对象上调用了send(),也没有任何请求,如Fiddler中所见.
更具体地说,事件处理程序放在窗体的“submit”事件上,在窗口上放置一个超时函数调用:
window.setTimeout(startPolling, 10);
并且在此函数中启动“startPolling”序列,该序列继续触发GET请求以从Web服务接收状态更新,该Web服务返回可用于更新UI的text / json.
这是基于WebKit的浏览器的限制(可能是安全性吗?)?这是Chrome错误吗? (我在Safari中看到了相同的行为).
解决方法:
我现在正在遇到一模一样的问题.目前我使用iframe,它是在表单中的目标.这允许在发布时执行xhr请求.虽然这确实有效,但如果有人禁用javascript,它不会优雅地降级.(我无法在没有js的iframe之外加载下一页)所以如果有人有更好的解决方案,我将不胜感激听到它.
这里是jQuery脚本供参考:
$(function() {
$('form[enctype=multipart/form-data]').submit(function(){
// Prevent multiple submits
if ($.data(this, 'submitted')) return false;
var freq = 500; // freqency of update in ms
var progress_url = '{% url checker_progress %}'; // ajax view serving progress info
$("#progressbar").progressbar({
value: 0
});
$("#progress").overlay({
top: 272,
api: true,
closeOnClick: false,
closeOnEsc: false,
expose: {
color: '#333',
loadSpeed: 1000,
opacity: 0.9
},
}).load();
// Update progress bar
function update_progress_info() {
$.getJSON(progress_url, {}, function(data, status){
if (data) {
var progresse = parseInt(data.progress);
$('#progressbar div').animate({width: progresse + '%' },{ queue:'false', duration:500, easing:"swing" });
}
window.setTimeout(update_progress_info, freq);
});
};
window.setTimeout(update_progress_info, freq);
$.data(this, 'submitted', true); // mark form as submitted.
});
});
内容总结
以上是互联网集市为您收集整理的javascript – Google Chrome:XMLHttpRequest.send()在执行POST时无法正常工作全部内容,希望文章能够帮你解决javascript – Google Chrome:XMLHttpRequest.send()在执行POST时无法正常工作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。