2011-04-21 19 views
21

हर बार जब मैं अपना AJAX jquery फ़ंक्शन चलाता हूं मुझे एक त्रुटि मिलती है, यह मेरे सभी AJAX कॉल के लिए जाती है। यहां मेरे कोड का एक उदाहरणAJAX jquery हमेशा चल रहा है त्रुटि

function FindContact(CompanyName,DivisionName,FirstName,LastName) { 

     $.ajax({ 
      url: 'Path', 
      dataType: "json", 
      async:false, 
      type:'post', 
      data: {'FirstName':FirstName,'LastName':LastName,'DivisionName':DivisionName,'CompanyName':CompanyName}, 
      success: DisplayContacts, 
      error: ErrorMsg 
     }); 
    } 

इस के आसपास पाने के लिए मैं का उपयोग इस

function ErrorMsg(result) { 
     if (result.status == 200 && result.statusText == 'OK') { 
      DisplayContacts(result); 
     } 
     else { 
      alert("FAILED : " + result.status + ' ' + result.statusText); 
     } 
    } 

इस कठिन है क्योंकि मैं हर ajax अनुरोध के लिए इस तरह विधि बनाने की जरूरत है।

यह त्रुटि कोड 1 क्यों चलाता है ???

कृपया मदद करें!

+2

सुनिश्चित करें कि आप जो भी लौट रहे हैं वह वैध जेसन है। यदि यह नहीं है, और सर्वर पर सबकुछ सही हो जाता है, तो $ .ajax सफलता के बजाय त्रुटि पर जायेगा। – locrizak

+0

हैलो, - क्या आपने जांच की है कि स्थिति कोड क्या है (.alert() का उपयोग कर)? - क्या आपने जांच की है कि लक्ष्य पृष्ठ परिणाम भेजने के लिए एक ही विधि का उपयोग करता है? – reporter

+0

@locrizak: मैं कैसे जांचूं कि मैं एक वैध जेसन – David

उत्तर

44

सुनिश्चित करें कि आप जो भी लौट रहे हैं वह वैध जेसन है। यदि यह नहीं है, और सर्वर पर सबकुछ सही हो जाता है, तो $ .ajax सफलता के बजाय त्रुटि पर जायेगा। यदि json मान्य है सिर्फ डेटाप्रकार स्विच करने के लिए HTML और देखना सफलता निकाल दिया जा रहा है के लिए है

 
function FindContact(CompanyName,DivisionName,FirstName,LastName) { 

     $.ajax({ 
      url: 'Path', 
      dataType: "html or json", 
      async:false, 
      type:'post', 
      data: {'FirstName':FirstName,'LastName':LastName,'DivisionName':DivisionName,'CompanyName':CompanyName}, 
      success: DisplayContacts, 
      error: ErrorMsg 
     }); 
    } 
 

एक त्वरित जांच करने के लिए। यदि यह आपके जेसन से अमान्य है, तो अगर आपको अभी भी एक ही समस्या हो रही है तो कुछ और गलत है।

वैध जेसन वापस लौटाया जा रहा है या नहीं, यह जांचने का एक और तरीका है कि फायरबग खोलें और जब अनुरोध भेजा जाए, प्रतिक्रिया टैब पर क्लिक करें, प्रतिक्रिया की प्रतिलिपि बनाएँ और यह जांचने के लिए jsonlint.com पर पहुंचे।

Jquery ajax docs

+0

आप सही हैं। यह एचटीएमएल – David

+0

के लिए काम करता है: डेटा टाइप: "जेसन" - एक आकर्षण की तरह काम करता है! –

2

मेरे समाधान एक अंतर में स्वीकार करें-टाइप और सामग्री प्रकार हेडर था। यदि क्लाइंट-साइड अनुरोध का स्वीकार्य-प्रकार हैडर सर्वर-साइड प्रतिक्रिया के सामग्री-प्रकार शीर्षलेख से मेल नहीं खाता है, तो Jquery त्रुटि कॉलबैक को कॉल करेगा।

डिफ़ॉल्ट रूप से Jquery, स्वीकृति-प्रकार शीर्षलेख application/json पर सेट करता है। हालांकि, मेरा सर्वर सामग्री-प्रकार application/x-javascript के साथ प्रतिक्रिया भेज रहा था। मेरा फिक्स सर्वर-साइड प्रतिक्रिया सामग्री-प्रकार शीर्षलेख को उचित application/json पर बदलना था।

+0

आपने सर्वर के किनारे सामग्री प्रकार शीर्षलेख कैसे बदल दिया? +1 अगर आप मुझे जवाब देते हैं। – David

+2

आपके पास सर्वर-साइड वातावरण क्या है? मैं php पर हूं इसलिए मेरा था: 'हेडर (' सामग्री-प्रकार: एप्लिकेशन/जेसन '); ' – charltoons

2

मुझे jquery AJAX का उपयोग करके AJAX कॉल करते समय एक ही समस्या का सामना करना पड़ रहा था।

$.ajax({ 
    url: "/url", 
    dataType: 'text', 
    success: function(result){ alert(result); }, 
    error: ErrorMsg, 
}); 

नोट:: डेटाप्रकार: मैं निम्नलिखित कोड का उपयोग कर यह तय 'पाठ' पैरामीटर, यह मेरे लिए काम किया।

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