Monday, 15 February 2010

javascript - Why can't I pass a json array as data when doing GET request with jquery ajax? -


अगर मैं इस तरह एक प्राप्त अनुरोध चलाता हूं:

  $ .ajax ({url: 'Http: // localhost: 8000 / api / points /', contentType: "application / json", डेटा प्रकार: "जेसन", डेटा: JSON.stringify ({"content_type": content_type, "object_id": object_id}), टाइप करें: 'GET',})। त्रुटि (फ़ंक्शन (आर) {$ (आउटपुट) .text ('error')} .सिवेट (फ़ंक्शन (आर) {$ (आउटपुट) .text (r.count);} )  

इसका अनुरोध निम्नानुसार है:

? {% 22 कंटेंट_प्रकार% 22: 8,% 22object_id% 22: 40}

जाहिर है कि यह बुरा है। यह ठीक काम करता है यदि मैं JSON.stringify () नहीं करता, लेकिन ऐसा क्यों है?

अगर मैं POST अनुरोध करता हूं तो यह ठीक है विपरीत! मुझे डेटा को तैयार करना होगा या यह काम नहीं करेगा तो फिर क्यों फर्क?

सबसे पहले, अपना अनुरोध ठीक करें:

 < Code> var req = $ .ajax ({method: "GET", url: "http: // localhost: 8000 / api / points /", डेटा प्रकार: "json", // क्या आप बता रहे हैं कि किस प्रकार की प्रतिक्रिया उम्मीद है। डेटा: {id: '12345'}}); Req.done (फ़ंक्शन (डेटा) {// डेटा के साथ कुछ करें}); Req.fail (फ़ंक्शन (jqXHR, स्थिति, गलती) {// असफल होने के मामले में कुछ फेंकना;});  

अगला पता करें कि आप किसके साथ काम कर रहे हैं:

डेटा : प्लेनऑब्जेक्ट या स्ट्रिंग या ऐरे डेटा को भेजने के लिए सर्वर। यह क्वेरी स्ट्रिंग में कनवर्ट किया जाता है, यदि पहले से कोई स्ट्रिंग नहीं है। इसे GET- अनुरोधों के लिए यूआरएल में जोड़ा गया है। डिफ़ॉल्ट रूप से, ऑब्जेक्ट के रूप में डेटा विकल्प में पारित डेटा (तकनीकी तौर पर, स्ट्रिंग के अलावा अन्य कोई भी) को संसाधित और एक क्वेरी में रूपांतरित किया जाएगा

ध्यान दें: jqXHR.success (), jqXHR। त्रुटि (), और jqXHR.complete () कॉलबैक को jQuery 1.8 में पदावनत किया जाएगा। अपने अंतिम निष्कासन के लिए अपना कोड तैयार करने के लिए, jqXHR.done (), jqXHR.fail (), और jqXHR.always () के बजाय का उपयोग करें।

अंत में:

कोई आवश्यकता नहीं: JSON.stringify ({"content_type": content_type, "object_id": object_id}) क्योंकि यह JSON.stringify के साथ करने का गलत तरीका है बस: {'content_type': 'type', 'object_id': 'id'}


No comments:

Post a Comment