2012-02-02 21 views
7

Ho creato una chiamata jquery ajax e funziona perfettamente in Chrome, firefox e IE.safari - jquery - errore interno del server 500 ajax

Dove come in Safari, sta dando errore 500 server interno nella risposta. Penso che potrebbe essere dovuto ad un'eccezione dal server. Ma quando ho provato il debug, ho scoperto che non sta colpendo affatto il server.

La cosa strana in questo è che la chiamata ajax funziona per tutte le chiamate alternative. Call-1 non riesce e quindi chiama 2 succede. enter image description hereenter image description here

Allego lo screenshot della richiesta e della risposta (sia successo che errore). Per favore aiutami a risolvere questo problema.

Grazie in anticipo, 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"); 

     } 

    }); 

Sono in esecuzione il safari da Win7. Il vero safari del Mac lo carica perfettamente. Nessun errore per una chiamata Ajax.

Il server è Windows 2008, con iOS in esecuzione 7. Nessun server di bilanciamento del carico. Ogni volta che l'ajax-call sta colpendo lo stesso server stesso metodo, con gli stessi dati di input e si aspetta gli stessi dati di output.

+0

Incollare il codice di chiamata ajax; forse c'è qualcosa di rilevante lì. Qualcosa di funky sul server che dovremmo sapere? È quella casella di localhost? Carica bilanciato (più server con un singolo hostname interno, sebbene il tuo nome host non assomigli a uno schema di denominazione tipico)? I dati che stai recuperando vengono assemblati in base a qualcosa che stai trascurando, che potrebbe coincidentalmente essere correlato a odds and even? Non riesco a pensare ad altro, ma più informazioni sarebbero buone. –

+0

se il problema sarà il dato, allora il punto di interruzione sul server dovrebbe essere colpito, giusto .. Non colpisce il punto di interruzione @ il server durante l'errore. – Raghav

+0

Riesci a vedere nel registro di Windows - visualizzatore eventi l'errore? Nel tuo caso proverò a rimuovere \ "e posizionare solo 'per il test.Forse i safari inviano alcuni parametri che li riconoscono nell'URL come pericolosi, e l'unica cosa da dire qui è questa barra - se il safari non la gestisce allo stesso modo. – Aristos

risposta

2

Direi che il motivo per cui la chiamata ha esito negativo è a causa di un bug in Safari quando si lavora con l'autenticazione di Windows in IIS. Vai alle impostazioni di autenticazione del tuo sito web. Fare clic con il tasto destro del mouse su Autenticazione di Windows, scegliere i provider e rimuovere Negoziare, lasciando NTLM che funziona correttamente. Non ho testato Kerberos.

Questo problema appare solo in alcune build di safari.

2

Primo: vorrei controllare per assicurarsi che $ ("# headerCompanyMenu") di lunghezza> 0 & & Coid = "" restituisce true, quando si pensa che dovrebbe essere.!.

Secondo: Mi piacerebbe essere sicuro di avere un '/' alla fine di globalObject.rootPath quando si utilizza Safari.

Terzo: vorrei cambiare il tuo messaggio ajax per assomigliare a questo:

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

Grazie per i suggerimenti. Ma sfortunatamente niente ha funzionato – Raghav

2

Oltre ai commenti di CCCason, vorrei dire in modo esplicito la chiamata AJAX che si tratta di tipo di dati è JSON aggiungendo:

dataType: "json" 

Forse safari sta indovinando il tipo di dati errato?

+0

Aggiunto quello al blob di ajax nella mia risposta. Buona idea. – Jason

Problemi correlati