2012-12-19 10 views
35

जेसन भेजने की कोशिश नहीं कर रहा है। यहाँ मेरी समारोह है:JQuery पोस्ट फॉर्म डेटा भेजता है और JSON

var object = ... ; 

$.ajax({ 
     type: 'POST', 
     url: '<url>', 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     data: object 
    }); 

लेकिन जब भी मैं क्रोम जाँच, यह हमेशा यह क्वेरी पैरामीटर के रूप में भेजता है:

Request Payload: 
startDate=Wed+Dec+19+2012+19%3A00%3A00+GMT-0500+(EST)&endDate=Thu+Dec+20+2012+19%3A00%3A00+GMT-0500+(EST)& 

मैं इसे कैसे JSON के रूप में भेजने के लिए मिलता है?

उत्तर

55
साथ JSON.stringify(object)

नमूना

:

$.ajax({ 
    type: 'POST', 
    url: '<url>', 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    data: JSON.stringify(object) 
}); 

नोट JSON.stringify, सभी ब्राउज़रों (http://caniuse.com/#feat=json) में समर्थित नहीं है विशेष ब्राउज़र IE7 और कम में।

आप यह भी ब्राउज़र आप इस जावास्क्रिप्ट पुस्तकालय का उपयोग कर सकते समर्थन करने के लिए की जरूरत है: https://github.com/douglascrockford/JSON-js

+0

बहुत बहुत धन्यवाद! – Jason

4

Stringify का उपयोग कर JSON.stringify(object)

संशोधित data क्षेत्र के लिए:

... 
data: JSON.stringify(object), 
... 

जिस तरह से आप यह कर रहे हैं, IMO, jQuery पैरामीटर एक शब्दकोश (कुंजी-मान जोड़ों) के रूप में देखता है, और उस से एक प्रतिशत-एन्कोडेड स्ट्रिंग बनाता है; और इसलिए आप उस आउटपुट को देखते हैं।

+0

धन्यवाद, मदद की गई/ – ajahongir

-1

मैं यह आसान डेटा डिफ़ॉल्ट में JSON के साथ एक के रूप में भेजने के लिए 'आवेदन/x-www फार्म-urlencoded' प्रारूप पाया है इस तरह क्षेत्र:

$.ajax({ 
    type: 'POST', 
    url: '<url>', 
    dataType: 'json', 
    data: {json:JSON.stringify(object)} 
}); 

सर्वर पर नियमित रूप से विधि का उपयोग क्षेत्र प्राप्त करने के लिए json कहा जाता है।

बस यह देखने के लिए साझा किया गया है कि यह आपके लिए मान्य है या नहीं।

+0

अच्छा बिंदु! यह सिर्फ इस बात पर निर्भर करता है कि ओपी को अपने सर्वर सेटअप के साथ क्या चाहिए/चाहता है – Ian

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