2009-12-04 7 views
7

मैं निम्नलिखित ajax अनुरोध किया है:

 jQuery.ajax({ 
      async: true, 
      type: "GET", 
      url: url, 
      data: data, 
      dataType: "json", 
      success: function(results){ 
       currentData = results; 
      }, 
      error: function(xhr, ajaxOptions, thrownError){ 
       if (xhr.status == 200) { 
        console.debug("Error code 200"); 
       } 
       else { 
        currentData = {}; 
        displayAjaxError(xhr.status); 
       } 
      } 
     }); 

किसी कारण त्रुटि कॉलबैक घटना हालांकि http स्थिति कोड 200 यानी है कहा जाता है के लिए। अनुरोध ठीक है। ऐसा क्यों है?

उत्तर

10

समस्या यह हो सकती है कि यूआरएल से वापस जेसन डेटा खराब हो गया है। जब सर्वर वास्तव में कुछ देता है, तो http स्थिति कोड 200 होता है। लेकिन इसका मतलब यह नहीं है कि डेटा उचित जेसन है। जांचें कि स्ट्रिंग किए गए जेसन डेटा को सही तरीके से गठित किया गया है।

मैं अपने स्वयं के अतिथि का जवाब दे रहा हूं क्योंकि मैंने इसे कठिन तरीके से सीखा है। मैं अपने जेसन डेटा में एक "-कोटे चरित्र से बच नहीं पाया था। इसके परिणामस्वरूप बहुत अजीब व्यवहार हुआ। सौभाग्य से डबल कोट चरित्र एकमात्र ऐसा किरदार है जिसे JSON के माध्यम से वितरित डेटा से बचने की आवश्यकता है। (इस मुद्दे पर अधिक: एक वेब सर्वर उपयोग करने के बजाय यूआरएल मेरे JSON कोड हमेशा गलत MIME प्रकार होगा यह मैं निम्नलिखित कोड का उपयोग की देखभाल करने के लिए:: Where can I find a list of escape characters required for my JSON ajax return type?)

1

क्या आपका कॉलबैक Content-type: application/json के साथ एक पृष्ठ लौटाता है? यदि नहीं, तो यह कारण भी हो सकता है।

+0

मैंने इसका परीक्षण किया है और ऐसा लगता है कि इससे कोई फर्क नहीं पड़ता। यह काम करता है (जब यह खराब होता है केएस) सामग्री के प्रकार के साथ और बिना दोनों तरीकों से। – kosoant

+0

हम्म शायद वह प्रोटोटाइप लाइब्रेरी था जो jquery नहीं था – Greg

0

मैं फ़ाइल के साथ परीक्षण का एक बहुत करते हैं।।

$(document).ready(
    function(){ 

     myData = {}; 
     $.ajax({ 
      type: "GET", 
      // url: "json.php?fn=jsonData.json",  // with Apache 
      url: "jsonData.json",      // As a file:/// URL 
      contentType: "application/json; charset=utf-8", 
      data: myData, 
      beforeSend: function(x) { 
       if(x && x.overrideMimeType) { 
        x.overrideMimeType("application/json; charset=UTF-8"); 
       } 
      }, 
      dataType: "json", 

      success: function(returnData){ 
       $("#jsonData").html("Success:"+returnData.tag); 
      }, 
      error: function(returnData) { 
       $("#jsonData").html("Error:"+returnData.tag); 
      } 
     }); 
    } 
); 

यह JSON डेटा के लिए MIME प्रकार को सही करने के लिए मजबूर करेगा।

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