2012-02-02 24 views
7

मैंने एक jquery AJAX कॉल बनाया है और यह क्रोम, फ़ायरफ़ॉक्स और आईई में ठीक काम कर रहा है।सफारी - jquery - AJAX 500 आंतरिक सर्वर त्रुटि

सफारी में कहां है, यह प्रतिक्रिया में 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 से सफारी चल रहा हूँ। वास्तविक मैक की सफारी इसे पूरी तरह से ठीक करती है। AJAX कॉल के लिए कोई त्रुटि नहीं।

सर्वर विंडोज़ 2008 है, iis 7 चला रहा है। कोई लोडबेलिंग सर्वर नहीं। प्रत्येक बार AJAX-कॉल एक ही सर्वर के समान विधि को उसी सर्वर पर मार रहा है, उसी इनपुट डेटा के साथ और उसी आउटपुट डेटा की अपेक्षा करता है।

+0

AJAX कॉल कोड पेस्ट करें; शायद वहां कुछ प्रासंगिक है। सर्वर पर कुछ भी फंकी है जिसके बारे में हमें पता होना चाहिए? क्या वह लोकहोस्ट बॉक्स है? संतुलित लोड करें (एकल सर्वर होस्टनाम पर एकाधिक सर्वर, हालांकि आपका होस्टनाम उस के लिए एक सामान्य नामकरण योजना की तरह नहीं दिखता है)? क्या आप जिस डेटा को अनदेखा कर रहे हैं उसके आधार पर इकट्ठा किया जा रहा है, जो संयोग से बाधाओं और शाम से संबंधित हो सकता है? मैं किसी और चीज के बारे में नहीं सोच सकता, लेकिन अधिक जानकारी अच्छी होगी। –

+0

यदि डेटा समस्या होगी, तो सर्वर पर ब्रेकपॉइंट मारा जाना चाहिए, ठीक है .. यह त्रुटि के दौरान सर्वर @ ब्रेकपॉइंट को मार नहीं रहा है। – Raghav

+0

क्या आप विंडोज लॉग में देख सकते हैं - इवेंट व्यूअर त्रुटि? आपके मामले में मैं परीक्षण के लिए \ "और बस जगह 'को हटाने का प्रयास करूंगा।हो सकता है कि सफारी कुछ पैरामीटर्स भेजें जो iis उन्हें खतरनाक के रूप में यूआरएल पर पहचानते हैं, और केवल यही सोच है कि यह स्लैश है - अगर सफारी इसे उसी तरह से संभाल नहीं लेती है। – Aristos

उत्तर

2

मैं कहूंगा कि कॉल विफल होने का कारण आईआईएस के तहत विंडोज प्रमाणीकरण के साथ काम करते समय सफारी में एक बग की वजह से है। अपनी वेबसाइट की प्रमाणीकरण सेटिंग्स पर जाएं। विंडोज प्रमाणीकरण पर राइट क्लिक करें, प्रदाताओं का चयन करें और नेगोशिएट को हटा दें, एनटीएलएम छोड़कर जो ठीक काम करता है। मैंने केर्बेरोस का परीक्षण नहीं किया है।

यह समस्या केवल सफारी के कुछ निर्माण में दिखाई देती है।

2

पहले: मुझे यकीन है कि बनाने के लिए जाँच करेगा कि $ ("# headerCompanyMenu") लंबाई> 0 & & coId = "" सही का आकलन जब आपको लगता है यह होना चाहिए।!।

दूसरा: मैं सुनिश्चित करता हूं कि 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"); 

     } 

    }); 
+0

सुझावों के लिए धन्यवाद। लेकिन दुर्भाग्य से कुछ भी काम नहीं किया। – Raghav

2

CCCason की टिप्पणी के अलावा, मैं स्पष्ट रूप से ajax कॉल कहते थे यह जोड़कर डेटाप्रकार json है कि:

dataType: "json" 

शायद सफारी गलत डेटा प्रकार का अनुमान लगा रहा है?

+0

मेरे उत्तर में AJAX के ब्लॉब में जोड़ा गया। अच्छा विचार। – Jason

संबंधित मुद्दे