jquery AJAX 函数的NS_Binding_Aborted错误

taor4pac  于 2023-02-12  发布在  jQuery
关注(0)|答案(3)|浏览(1045)

我有一个链接,点击它的请求应该去Web服务器,并在成功执行重定向应该发生。我已经使用 AJAX ,但我得到的HTTpFox NS_Binding_Aborted错误。代码:

<a id="lnkredirect" href="javascript:void(0);" onclick="myfunction();">Some text</a>

AJAX 代码:

function myfunction(){
 $.ajax({
       url: Web server Url,
       type: 'POST',
       datatype: 'JSON',
       timeout: 20000,
       data: null,
       success: function{ $("#lnkredirect").attr('href','redirection link...');},
       error : function{ $("#lnkredirect").attr('href','redirection link...');}
 )};
 return true;
}

重定向正在发生,但我在Firefox中得到NS_Binding_Aborted错误。在成功和错误的情况下,重定向应该发生,但为什么NS_Binding_Aborted来了,我不确定这一点。NS_Binding_Aborted错误应该来只有当一个事件取消一些以前运行的事件,但我已经抑制了链接的href和重定向它一旦 AJAX 请求被执行,所以应该只有一个服务器调用,NS_Binding_Aborted不应该出现。2请告诉我哪里出错了?

dgenwo3n

dgenwo3n1#

我遇到了类似的问题,在onclick中同时使用href和XmlHttpRequest时也遇到了类似的问题。我的XMLHttpRequest被中止(ns_binding_aborted),因此从未达到状态200。我还可以在Firefox控制台中看到我的XHR被“devtools阻止”。
这是因为页面在完成任务(onclick中的内容)之前(通过href)被重新加载了。
我有过这样的经历:

<script type="text/javascript">
function incrementNumberOfDownloads() {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) { // 4 = request ended, 200 = success
            //update displayed number of downloads
            document.getElementById("numberOfDownloads").innerHTML = this.responseText; 
        }
    };
    xhttp.open("GET", "incrementNumberOfDownloads.php", true);
    xhttp.send();
    return true;
}
</script>
<p id="numberOfDownloads">42</p>
<a href="files/myFileToDownload.zip" onclick="return incrementNumberOfDownloads();">Download my file !</a>

我通过在下载链接中添加一个target="_blank”来修复这个问题,这样在单击时就不会重新加载页面,从而使XMLHttpRequest能够成功完成。

t9aqgxwy

t9aqgxwy2#

这是由于另一个请求中止了你的请求。一般来说,当你的目标是重新加载所有页面的数据时,只需结束请求,不要同步请求,这是一个小的novell错误。
在这种情况下,“返回“语句是有问题的,返回语句必须在成功部分。

k2arahey

k2arahey3#

当我将调用原生js表单提交事件更改为jQuery提交事件时,我的问题得到了修复。

// this code
form[0].dispatchEvent(new Event("submit"));
// changed to
form.submit();

相关问题