safari - jquery - ajax 500内部服务器错误

safari - jquery - ajax 500内部服务器错误

问题描述:

我创建了一个jQuery Ajax调用,它在Chrome,Firefox和IE中工作正常。safari - jquery - ajax 500内部服务器错误

在Safari中,响应中发生500个内部服务器错误。我虽然可能是由于服务器的例外。但是当我尝试调试时,我发现它根本没有打到服务器。

的奇怪的事情,这是中,AJAX调用适用于每隔电话。呼叫1失败,然后呼叫2成功。 enter image description hereenter image description here

正在附加请求和响应(成功和错误)的屏幕截图。请帮我解决这个问题。

由于提前, 拉哈夫

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调用的是相同的服务器相同的方法,使用相同的输入数据并且期望相同的输出数据。

+0

粘贴ajax调用代码;也许那里有一些相关的东西。我们应该知道的服务器上有什么奇怪的东西?那个localhost盒子?负载平衡(多个服务器在单个内部主机名,尽管你的主机名看起来不像这种典型的命名方案)?您检索的数据是否基于您忽略的某些内容进行了汇总,这可能巧合与赔率和平均值有关?我想不出别的,但更多的信息会很好。 – 2012-02-02 05:57:20

+0

如果数据会成为问题,那么服务器上的断点应该是正确的,在错误期间它不会在服务器上达到断点。 – Raghav 2012-02-02 06:44:57

+0

你可以在Windows日志 - 事件查看器中看到错误吗?在你的情况下,我会尝试删除\“并放在'测试。也许safari会发送一些iis认识到他们在url上的参数是危险的,唯一的想法就是这个斜​​线 - 如果safari不以相同的方式处理它。 – Aristos 2012-02-02 08:45:50

我要说的是,调用失败的原因是因为在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"); 

     } 

    }); 
+0

感谢您的建议。没有任何工作 – Raghav 2012-02-11 21:11:31

除了CCCason的意见,我会明确地告诉Ajax调用,它的数据类型是JSON加入:

dataType: "json" 

也许Safari是猜测错误的数据类型?

+0

补充说,在我的答案阿贾克斯blob。好主意。 – Jason 2012-02-07 19:02:15