簡體   English   中英

safari - jquery - ajax 500內部服務器錯誤

[英]safari - jquery - ajax 500 internal server error

我創建了一個jquery ajax調用,它在Chrome,firefox和IE中運行良好。

在Safari中,它在響應中給出了500個內部服務器錯誤。 我雖然可能是由於Server的異常。 但是當我嘗試調試時,我發現它根本沒有打到服務器上。

其中最奇怪的是,ajax-call適用於每個備用呼叫。 Call-1失敗,然后調用2成功。 在此輸入圖像描述在此輸入圖像描述

我附上了請求和響應的屏幕截圖(成功和錯誤)。 請幫我解決這個問題。

謝謝你,Raghav

var coId = globalObject.GetCompanyIdFromUrl();
if ($("#headerCompanyMenu").length > 0 && coId != "") {
    var strData = "{\"coId\":\"" + coId + "\"}";
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        cache: false,
        url: globalObject.rootPath + "search/webmethod.aspx/GetCoHeaderData",
        data: strData,
        async: true,
        success: function (d) {
            var coHeaderData = JSON.parse(d);
            $("#lblCoNm").html(coHeaderData.lblCoNm);
            $("#lbl_prim_im").html(coHeaderData.lbl_prim_im);
            $("#lbl_prim_md").html(coHeaderData.lbl_prim_md);
            $("#lbl_prd_own").html(coHeaderData.lbl_prd_own);
            $("#lbl_geo_own").html(coHeaderData.lbl_geo_own);
            $("#lbl_org_inv").html(coHeaderData.lbl_org_inv);
            $("#lbl_out_inv").html(coHeaderData.lbl_out_inv);
            $("#lbl_cur_val").html(coHeaderData.lbl_cur_val);
            $("#lbl_nbv").html(coHeaderData.lbl_nbv);
            $("#lbl_fv").html(coHeaderData.lbl_fv);
            $("#lblProc").html(coHeaderData.lblProc);
            $("#lblFinGrd").html(coHeaderData.lblFinGrd);

            if (coHeaderData.addNewDeal == "true")
                $("#lnkAddNewDeal").show();
            if (coHeaderData.coDeals.length > 0) {
                BindData("coDealsTmpl", coHeaderData.coDeals);
                $("#coDeals").show();
            }
        },
        error: function (error) {
            //alert("Company search error");

        }

    });

我正在從Win7運行Safari。 實際的Mac's safari可以很好地加載它。 ajax調用沒有錯誤。

服務器是Windows 2008,運行iis 7.沒有負載均衡服務器。 每次ajax調用命中相同的服務器時,使用相同的輸入數據並期望相同的輸出數據。

我會說呼叫失敗的原因是因為在IIS下使用Windows身份驗證時Safari中存在錯誤。 轉到您網站的身份驗證設置。 右鍵單擊Windows身份驗證,選擇提供程序並刪除Negotiate,使NTLM正常工作。 我還沒有測試過Kerberos。

此問題僅出現在Safari的某些版本中。

第一:我會檢查以確保$(“#headerCompanyMenu”)。length> 0 && coId!=“”在你認為應該是的時候評估為true。

第二:當你使用Safari時,我會確保你在globalObject.rootPath的末尾有一個'/'。

第三:我會改變你的ajax帖子,看起來像這樣:

var coId = globalObject.GetCompanyIdFromUrl();
if ($("#headerCompanyMenu").length > 0 && coId != "") {
    var strData = {'coId' : coId};
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        cache: false,
        url: globalObject.rootPath + "search/webmethod.aspx/GetCoHeaderData/",
        data: strData,
        dataType: "json",
        async: true,
        success: function (d) {
            var coHeaderData = JSON.parse(d);
            $("#lblCoNm").html(coHeaderData.lblCoNm);
            $("#lbl_prim_im").html(coHeaderData.lbl_prim_im);
            $("#lbl_prim_md").html(coHeaderData.lbl_prim_md);
            $("#lbl_prd_own").html(coHeaderData.lbl_prd_own);
            $("#lbl_geo_own").html(coHeaderData.lbl_geo_own);
            $("#lbl_org_inv").html(coHeaderData.lbl_org_inv);
            $("#lbl_out_inv").html(coHeaderData.lbl_out_inv);
            $("#lbl_cur_val").html(coHeaderData.lbl_cur_val);
            $("#lbl_nbv").html(coHeaderData.lbl_nbv);
            $("#lbl_fv").html(coHeaderData.lbl_fv);
            $("#lblProc").html(coHeaderData.lblProc);
            $("#lblFinGrd").html(coHeaderData.lblFinGrd);

            if (coHeaderData.addNewDeal == "true")
                $("#lnkAddNewDeal").show();
            if (coHeaderData.coDeals.length > 0) {
                BindData("coDealsTmpl", coHeaderData.coDeals);
                $("#coDeals").show();
            }
        },
        error: function (error) {
            //alert("Company search error");

        }

    });

除了CCCason的評論之外,我還會通過添加以下內容明確告訴ajax調用它的數據類型是json:

dataType: "json"

也許safari猜測錯誤的數據類型?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM