gpt4 book ai didi

javascript - Google Chrome : XMLHttpRequest. send() 在执行 POST 时不工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:22:55 24 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序允许用户使用表单(POST 请求)发送文件,并在上传该文件时执行一系列 GET 请求以收集有关上传状态的信息.

它在 IE 和 Firefox 中运行良好,但在 Chrome 和 Safari 中运行不佳。

问题是,即使在 XMLHttpRequest 对象上调用了 send(),但在 Fiddler 中可以看到没有任何请求。

更具体地说,一个事件处理程序被放置在表单的“提交”事件上,它在窗口上放置一个超时函数调用:

window.setTimeout(startPolling, 10);

并在此函数中启动“startPolling”序列,该序列不断触发 GET 请求以从 Web 服务接收状态更新,该 Web 服务返回可用于更新 UI 的文本/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 时不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2022096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com