safari - jquery - ajax 500内部服务器错误
我创建了一个jQuery Ajax调用,它在Chrome,Firefox和IE中工作正常。safari - jquery - ajax 500内部服务器错误
在Safari中,响应中发生500个内部服务器错误。我虽然可能是由于服务器的例外。但是当我尝试调试时,我发现它根本没有打到服务器。
的奇怪的事情,这是中,AJAX调用适用于每隔电话。呼叫1失败,然后呼叫2成功。
正在附加请求和响应(成功和错误)的屏幕截图。请帮我解决这个问题。
由于提前, 拉哈夫
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 Safari浏览器加载它非常好。没有错误的Ajax调用。
服务器是Windows 2008,运行iis 7.没有负载平衡服务器。每次ajax调用的是相同的服务器相同的方法,使用相同的输入数据并且期望相同的输出数据。
我要说的是,调用失败的原因是因为在Safari中的错误与IIS下的Windows身份验证工作时。转到您网站的身份验证设置。右键单击Windows身份验证,选择提供程序并删除协商,从而使NTLM正常工作。我没有测试过Kerberos。
此问题只出现在Safari的某些版本中。
第一:我会检查,以确保$( “#headerCompanyMenu”)长度> 0 & & COID = “” 当你认为它应该是计算结果为真。!。
第二:当你使用Safari时,我会确保你在globalObject.rootPath
的末尾有'/'。
第三:我会改变你的阿贾克斯后,看起来像这样:
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");
}
});
感谢您的建议。没有任何工作 – Raghav 2012-02-11 21:11:31
除了CCCason的意见,我会明确地告诉Ajax调用,它的数据类型是JSON加入:
dataType: "json"
也许Safari是猜测错误的数据类型?
补充说,在我的答案阿贾克斯blob。好主意。 – Jason 2012-02-07 19:02:15
粘贴ajax调用代码;也许那里有一些相关的东西。我们应该知道的服务器上有什么奇怪的东西?那个localhost盒子?负载平衡(多个服务器在单个内部主机名,尽管你的主机名看起来不像这种典型的命名方案)?您检索的数据是否基于您忽略的某些内容进行了汇总,这可能巧合与赔率和平均值有关?我想不出别的,但更多的信息会很好。 – 2012-02-02 05:57:20
如果数据会成为问题,那么服务器上的断点应该是正确的,在错误期间它不会在服务器上达到断点。 – Raghav 2012-02-02 06:44:57
你可以在Windows日志 - 事件查看器中看到错误吗?在你的情况下,我会尝试删除\“并放在'测试。也许safari会发送一些iis认识到他们在url上的参数是危险的,唯一的想法就是这个斜线 - 如果safari不以相同的方式处理它。 – Aristos 2012-02-02 08:45:50