[英]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.