2008-09-17 17 views
10

मैंने यह निर्धारित किया है कि सर्वर से आने वाला मेरा JSON मान्य है (AJAX कॉल मैन्युअल रूप से बना रहा है), लेकिन मैं वास्तव में JQuery का उपयोग करना चाहता हूं। मैंने यह भी निर्धारित किया है कि "पोस्ट" यूआरएल, सर्वर पर भेजा जा रहा है, फ़ायरबग का उपयोग कर सही है। हालांकि, त्रुटि कॉलबैक अभी भी ट्रिगर किया जा रहा है (parsererror)। मैंने डेटाटाइप की भी कोशिश की: पाठ।JQuery AJAX कॉल से JSON प्राप्त करने में असमर्थ

क्या अन्य विकल्प हैं जिनमें मुझे शामिल करना चाहिए?

1) 'डेटाप्रकार' विकल्प आपको 'डेटाप्रकार' होना चाहिए निर्दिष्ट किया है (केस-संवेदी मेरा मानना ​​है कि)

2) का उपयोग करके देखें:

$(function() { 
    $("#submit").bind("click", function() { 
     $.ajax({ 
      type: "post", 
      url: "http://myServer/cgi-bin/broker" , 
      datatype: "json", 
      data: {'start' : start,'end' : end}, 
      error: function(request,error){ 
       alert(error); 
      }, 
      success: function(request) { 
       alert(request.length); 
      } 
     }); // End ajax 
    }); // End bind 
}); // End eventlistener 

उत्तर

19

यहाँ मैं कोशिश करेगा कुछ सुझाव हैं इतनी के रूप में 'contentType' विकल्प:

contentType: "application/json; charset=utf-8" 

मुझे यकीन है कि कितना जवाब में नहीं के रूप में यह अपनी पोस्ट यूआरएल के लिए अनुरोध में प्रयोग किया जाता है में मदद मिलेगी, नहीं हूँ। अधिक जानकारी के लिए इस लेख देखें: http://encosia.com/2008/06/05/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax (यह asp.net के लिए लिखा है, लेकिन लागू हो सकता है)

3) ट्रिपल अपनी पोस्ट यूआरएल के उत्पादन की जाँच करें और एक JSON सत्यापनकर्ता के माध्यम से उत्पादन चलाने बस पूरी तरह से सुनिश्चित करने के लिए यह मान्य है और JSON ऑब्जेक्ट में पार्स किया जा सकता है। http://www.jsonlint.com

आशा है कि इनमें से कुछ मदद करता है!

+0

उत्तर देने के लिए समय लेने के लिए बहुत बहुत धन्यवाद। यह डेटाटाइप विकल्प था जो मैंने डेटाटाइप –

+7

के रूप में किया था बस एक नोट, डेटा सेट करने के लिए "json" टाइप स्वचालित रूप से सामग्री को "एप्लिकेशन/जेसन" टाइप करें। – bhollis

+0

@BHR +1 दस्तावेज़ों के अनुसार सही है। हालांकि, यह ध्यान देने योग्य हो सकता है: मैं jquery 1.6.4 एटीएम के साथ काम कर रहा हूं और पाया है कि मुझे स्पष्ट रूप से सामग्री सेट करने की आवश्यकता है टाइप: "एप्लिकेशन/जेसन; charset = utf-8" – zack

0

डेटा पैरामीटर गलत है। यहाँ एक उदाहरण है कि काम करता है:

डेटा: {सूचकांक: ddl.selectedIndex},

यह मान ddl.selectedIndex साथ संपत्ति कहा जाता सूचकांक के साथ एक वस्तु contructs।

आप अपने डेटा पैरामीटर लाइन से बोलियां हटाने की जरूरत

गुड लक एक

+0

-1, यह पूरी तरह से वैध वाक्यविन्यास है संपत्ति नाम के रूप में स्ट्रिंग। कुछ स्थितियों में यह एक जरूरी है, उदाहरण के लिए जब आपके पास एक संपत्ति का नाम होता है जो जावास्क्रिप्ट में मान्य पहचानकर्ता नाम नहीं होगा, तो यह उद्धृत करने से आप इसे एक मूल्य भी दे सकते हैं। एक आम उदाहरण '" वर्ग "है, जिसे उद्धृत किया जाना चाहिए क्योंकि यह एक आरक्षित शब्द है। जेएसओएन सिंटैक्स में सभी संपत्ति नामों को डबल कोट्स में लपेटने की भी आवश्यकता है। – DarthJDG

1

क्यों myResult बजाय request?

success: function(request) { 
       alert(myResult.length); 
      } 
+0

मुझे अपने पूर्ण कोड में बहुत यकीन है कि मैं myResult में अनुरोध में हेरफेर कर रहा था .... लेकिन मैंने इसे बदल दिया ताकि यह और स्पष्ट हो ... समस्या यह थी कि डेटा टाइप को 'डेटाटाइप' के रूप में लिखा गया था। टिप्पणी के लिए धन्यवाद –

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