Asp.Net jQuery $.getJSON 有时会导致整页回发?

Posted

技术标签:

【中文标题】Asp.Net jQuery $.getJSON 有时会导致整页回发?【英文标题】:Asp.Net jQuery $.getJSON sometimes causes full page postback? 【发布时间】:2010-09-18 20:55:14 【问题描述】:

我正在编写一个 ASP.NET 网络表单应用程序,并且我正在使用 jQuery 进行 AJAX 调用。这运行良好,但在某些情况下,$.getJSON 调用会导致整页回发。我没有在应用程序的任何地方使用 ASP.NET AJAX 库。我无法始终如一地重现该问题,并且不确定是什么原因造成的。这是我正在使用的 jQuery 代码。有人遇到过这个吗?是否有可能之前的 AJAX 调用可能没有完成,并且请求重叠?

function getActionMismatch(id) 
    setPageElementVisibility();
    $(".ActionDetailArea").slideUp("fast");
    $("#AjaxLoader_Action").show();

    $.getJSON("Main.aspx?Callback=GetMismatch",
     MismatchId: id ,
    function(result) 
        $("#adMismatchId").text(result.MismatchId);
        $("#adAuthMerchId").text(result.AuthorizationMerchantId);
        $("#adSttlMerchId").text(result.SettlementMerchantId);
        $("#adCreateDate").text(formatJSONDate(Date(result.AppendDts)));

        $(".ActionDetailArea").slideDown('fast', toggleBlock('...click Adjust Promo to enter details', true));
        $("#AjaxLoader_Action").hide();
    
    );
    return false;

【问题讨论】:

【参考方案1】:

你是如何触发那个 javascript 函数的?

如果它是按钮等控件上的客户端单击处理程序,则需要确保调用 preventDefault()。否则,浏览器将提交表单并导致回发,即使在 AJAX 回调正在进行时也是如此。

【讨论】:

【参考方案2】:

在某些情况下,当 jQuery 无法进行 AJAX 调用时,它会创建一个隐藏的 iframe 并从那里进行正常提交。我猜想这个过程是如何崩溃的。

【讨论】:

但是我可以在 getJSON 中使用任何其他函数来确定遇到的错误或确定调用何时完成?

以上是关于Asp.Net jQuery $.getJSON 有时会导致整页回发?的主要内容,如果未能解决你的问题,请参考以下文章

支持 JSONP 的 ASP.NET 通用 HTTP 处理程序 (.ashx)

asp.net mvc 3.0 前台getJson方法获取不到后台的数据,调试的时候后台已经有数据返回了

Asp.net Core 3.1 - 用 Ajax 打开视图?

ASP.NET Web API - 尝试传递参数时不支持 GET HTTP Verb (405)

如何替换 jQuery DataTables 中的数据数组

jQuery $.getJSON() 失败