Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE中未为XHR请求触发onReadyStateChange_Javascript_Jquery_Internet Explorer_Http_Xmlhttprequest - Fatal编程技术网

Javascript IE中未为XHR请求触发onReadyStateChange

Javascript IE中未为XHR请求触发onReadyStateChange,javascript,jquery,internet-explorer,http,xmlhttprequest,Javascript,Jquery,Internet Explorer,Http,Xmlhttprequest,我有我正在使用的代码,它在chrome中运行良好,但在IE中,看起来onreadystatechenge没有启动 如何让它跨浏览器工作。我在IE中读到,您必须在发送之前放置onreadystatechange事件,但这不起作用 这里的警报没有开火。是的,它是成功的 if (xhr.status==200 && xhr.readyState==4) { alert("DONE!"); } 这就是整个请求 function SendFile(evt)

我有我正在使用的代码,它在chrome中运行良好,但在IE中,看起来onreadystatechenge没有启动

如何让它跨浏览器工作。我在IE中读到,您必须在发送之前放置onreadystatechange事件,但这不起作用

这里的警报没有开火。是的,它是成功的

if (xhr.status==200 && xhr.readyState==4)
    {
        alert("DONE!");
    }
这就是整个请求

function SendFile(evt)
{
var xhr = new XMLHttpRequest();
var data = new FormData();
var files = $("#FileUpload1").get(0).files;

for (var i = 0; i < files.length; i++)
{

    data.append(files[i].name, files[i]);
}
xhr.upload.addEventListener("progress", function (evt)
{
    if (evt.lengthComputable)
    {
        var progress = Math.round(evt.loaded * 100 / evt.total);
        $("#progressbar").progressbar("value", progress);
    }
}, false);
xhr.open("POST", "Handler.ashx");

xhr.onreadystatechange=function ()
{
    if (xhr.status==200 && xhr.readyState==4)
    {
        alert("DONE!");
    }
}
xhr.send(data);


$("#progressbar").progressbar({
    max: 100,
    change: function (evt, ui)
    {
        $("#progresslabel").text($("#progressbar").progressbar("value") + "%");
    },
    complete: function (evt, ui)
    {
        $("#progresslabel").text("File upload successful!");
        GetID();
    }
});
显然,IE 11(我认为您正在测试的东西是坏的)删除了
script.onreadystatechange
,取而代之的是
script.onload

这是你的电话号码

显然,IE 11(我假设您正在测试的是坏的)删除了
script.onreadystatechange
,取而代之的是
script.onload

这是你的电话号码

显然,IE 11(我假设您正在测试的是坏的)删除了
script.onreadystatechange
,取而代之的是
script.onload

这是你的电话号码

显然,IE 11(我假设您正在测试的是坏的)删除了
script.onreadystatechange
,取而代之的是
script.onload

这是你的电话号码


您的
XMLHttpRequest
对象可能正在缓存

尝试:


您的
XMLHttpRequest
对象可能正在缓存

尝试:


您的
XMLHttpRequest
对象可能正在缓存

尝试:


您的
XMLHttpRequest
对象可能正在缓存

尝试:



这很奇怪,因为
xhr.readyState
只能从0到4,但不能从200。很抱歉,我是手工编写的。它实际上是4.Fixed。如果您删除
xhr.status==200&&
,它仍然不起作用吗?因为您使用的是jQuery,您可能想尝试使用
$.ajax()
方法,而不是常规的Javascript xhr。看起来删除xhr会在IE中返回readyState,但不会返回状态,我现在没有时间来找出原因。现在必须这样做。这很奇怪,因为
xhr.readyState
只能从0到4,但不能从200。很抱歉,我是手工编写的。它实际上是4.Fixed。如果您删除
xhr.status==200&&
,它仍然不起作用吗?因为您使用的是jQuery,您可能想尝试使用
$.ajax()
方法,而不是常规的Javascript xhr。看起来删除xhr会在IE中返回readyState,但不会返回状态,我现在没有时间来找出原因。现在必须这样做。这很奇怪,因为
xhr.readyState
只能从0到4,但不能从200。很抱歉,我是手工编写的。它实际上是4.Fixed。如果您删除
xhr.status==200&&
,它仍然不起作用吗?因为您使用的是jQuery,您可能想尝试使用
$.ajax()
方法,而不是常规的Javascript xhr。看起来删除xhr会在IE中返回readyState,但不会返回状态,我现在没有时间来找出原因。现在必须这样做。这很奇怪,因为
xhr.readyState
只能从0到4,但不能从200。很抱歉,我是手工编写的。它实际上是4.Fixed。如果您删除
xhr.status==200&&
,它仍然不起作用吗?因为您使用的是jQuery,您可能想尝试使用
$.ajax()
方法,而不是常规的Javascript xhr。看起来删除xhr会在IE中返回readyState,但不会返回状态,我现在没有时间来找出原因。现在就必须这样了。谢谢,只是测试了onload而不是onreadtstatechange,运气不好。我肯定会同意上面Marco的建议,只使用
$.ajax()
,而不是浪费时间在IE的愚蠢上。我最终删除了Status==200检查。我只需在if中进行readystate检查,就可以得到正确的响应。我没有时间做改变。另外,我不确定jquery$ajax是否有.upload progress事件。谢谢,只是测试了onload而不是onreadtstatechange,运气不好。好吧,我肯定会同意上面Marco的建议,只使用
$.ajax()
,而不是浪费时间在IE的愚蠢上。我最终删除了Status==200检查。我只需在if中进行readystate检查,就可以得到正确的响应。我没有时间做改变。另外,我不确定jquery$ajax是否有.upload progress事件。谢谢,只是测试了onload而不是onreadtstatechange,运气不好。好吧,我肯定会同意上面Marco的建议,只使用
$.ajax()
,而不是浪费时间在IE的愚蠢上。我最终删除了Status==200检查。我只需在if中进行readystate检查,就可以得到正确的响应。我没有时间做改变。另外,我不确定jquery$ajax是否有.upload progress事件。谢谢,只是测试了onload而不是onreadtstatechange,运气不好。好吧,我肯定会同意上面Marco的建议,只使用
$.ajax()
,而不是浪费时间在IE的愚蠢上。我最终删除了Status==200检查。我只需在if中进行readystate检查,就可以得到正确的响应。我没有时间做改变。另外,我不确定jquery$ajax是否有.upload进度事件。
   xhr.onload = function ()
    {
        if (xhr.readyState == 4 && xhr.status==200)
        {
            alert("IE DONE!");

        }
    }
var myNoCachePage = document.location + '?' + new Date().getTime();
xhr.open("GET", myNoCachePage, true);  // Prevent IE11 from caching
xhr.send();