使用XHR通过POST发送大量数据

时间:2010-07-30 17:54:53

标签: javascript post google-chrome xmlhttprequest

我有一个XHR,可以​​将大量数据上传到服务器。这个XHR间歇性地死亡,看似没有模式。目前我的代码如下所示:

function makeFormData(data) {
    var formdata = "";
    for (var key in data) {
        formdata = formdata + "&" + key + "=" + encodeURIComponent(data[key]);
    }
    return formdata.slice(1);
}

function xhr(url, data, onsuccess, onerror) {
    var xhrequest = new XMLHttpRequest();

    xhrequest.onreadystatechange = function () {
        if (xhrequest.readyState != 4)
            return;

        if (xhrequest.responseText)
            onsuccess(xhrequest.responseText);
    }

    xhrequest.onerror = function (error_param) {
        onerror(error_param);
    }

    xhrequest.open('POST', url, true);
    xhrequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    xhrequest.send(makeFormData(data));
}

这是Chrome扩展程序。我究竟做错了什么?如何使表单成为多部分,以使上传更小?我已经使用Wireshark来跟踪请求,并且它通过许多数据包重传来切断中间发送(并且永远不会完成)。

请帮助我,这让我发疯了。

1 个答案:

答案 0 :(得分:2)

检查服务器指令。也许max_execution_time和上传大小的值很小。如果js没有执行请求,请尝试调试它。