2012-02-02 21 views
7

He creado una llamada jquery ajax y está funcionando bien en Chrome, Firefox y IE.safari - jquery - ajax 500 servidor interno error

Donde, como en Safari, está dando un error interno de 500 servidores en la respuesta. Pensé que podría deberse a una excepción del servidor. Pero cuando probé la depuración, descubrí que no está llegando al servidor.

Lo más extraño de esto es que la llamada ajax funciona para todas las llamadas alternativas. Call-1 falla y luego la llamada 2 tiene éxito. enter image description hereenter image description here

Adjuntamos la captura de pantalla de la solicitud y la respuesta (tanto éxito como error). Por favor, ayúdame a solucionar este problema.

Gracias de antemano, 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"); 

     } 

    }); 

postulo el safari de Win7. El safari real de Mac lo carga perfectamente bien. No hay errores para la llamada ajax.

El servidor es Windows 2008, ejecuta iis 7. No hay servidores de equilibrio de carga. Cada vez que la llamada ajax golpea el mismo servidor en el mismo método, con los mismos datos de entrada y espera los mismos datos de salida.

+0

Pegue el código de llamada ajax; tal vez hay algo relevante allí. ¿Algo funky en el servidor del que deberíamos saber? Es ese cuadro localhost? Cargar equilibrado (varios servidores en el nombre de host interno único, aunque su nombre de host no se parece a un esquema de nombres típico para eso)? ¿Los datos que está recuperando están siendo ensamblados en base a algo que está pasando por alto, que casualmente podría estar relacionado con las probabilidades y los pares? No puedo pensar en otra cosa, pero más información sería buena. –

+0

si los datos van a ser el problema, entonces el punto de interrupción en el servidor debe ser golpeado, derecho ... No está llegando al punto de interrupción @ del servidor durante el error. – Raghav

+0

¿Puedes ver en el registro de Windows el visor de eventos? En tu caso, trataré de eliminar el \ "y colocar solo" para la prueba.Quizás Safari envíe algunos parámetros que los reconozca en la url como peligrosos, y lo único que se puede pensar es este corte: si el safari no lo maneja de la misma manera. – Aristos

Respuesta

2

Diría que el motivo por el que falla la llamada se debe a un error en Safari cuando se trabaja con Autenticación de Windows en IIS. Ve a la configuración de Autenticación de tu sitio web. Haga clic con el botón derecho en Autenticación de Windows, elija proveedores y elimine Negociar, dejando NTLM que funciona bien. No he probado Kerberos.

Este problema solo aparece en ciertas compilaciones de safari.

2

Primero: Me gustaría comprobar para asegurarse de que $ ("# headerCompanyMenu") de longitud> 0 & & COID = "" se evalúa como verdadera cuando se piensa que debería ser.!.

Segundo: Me aseguraré de tener un '/' al final de globalObject.rootPath cuando está utilizando Safari.

Tercero: que cambiaría con el cargo, ajax a tener este aspecto:

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

Gracias por las sugerencias. Pero desafortunadamente nada funcionó. – Raghav

2

Además de los comentarios de CCCason, le diría explícitamente la llamada AJAX que es tipo de datos es JSON añadiendo:

dataType: "json" 

¿Quizás safari está adivinando el tipo de datos incorrecto?

+0

Agregué eso a la mancha de ajax en mi respuesta. Buena idea. – Jason

Cuestiones relacionadas