2009-11-17 8 views
54

मैं कुछ JSON स्वरूपित डेटा को अजाक्स के माध्यम से jQuery सर्वर पर रखने की कोशिश कर रहा हूं। मेरे कोड इस तरह दिखता है:jQuery - जेएसओएन को अजाक्स के माध्यम से कैसे दबाएं?

$.ajax({ 
    type: "PUT", 
    url: myURL, 
    contentType: "application/json", 
    data: {"data": "mydata"} 
}); 

लेकिन सर्वर साइड पर, मैं एक data=mydata स्ट्रिंग प्राप्त करते हैं, उम्मीद JSON के बजाय। Firebug मुझे वही बताता है।

त्रुटि कहां है?

+0

आप सर्वर साइड पर प्रयोग कर रहे हैं क्या:

यहाँ मैं JSON ऑब्जेक्ट ऊपर उल्लेख किया है का उपयोग करें? –

+0

मैं कॉचडब का उपयोग करता हूं जो JSON की अपेक्षा करता है। –

+6

AJAX PUT * सभी प्रमुख ब्राउज़र में उपलब्ध है। HTTP पुट नहीं है। तो इस मामले में, यह PUT का उपयोग करने के लिए ठीक है (अनुशंसित, यहां तक ​​कि)। –

उत्तर

46

मुझे लगता है कि डेटा को स्ट्रिंग होने की आवश्यकता है। ऑब्जेक्ट्स क्वेरी स्ट्रिंग्स में कनवर्ट किए जाते हैं जो आप यहां देख रहे हैं।

आप अपने ऑब्जेक्ट को स्ट्रिंग में बदलने के लिए JSON.stringify(obj) विधि का उपयोग कर सकते हैं। JSON ऑब्जेक्ट का कोड: https://github.com/douglascrockford/JSON-js/blob/master/json2.js से उपलब्ध है।

वैकल्पिक रूप से, केवल उस कोड को पास करें जिसका उपयोग आप ऑब्जेक्ट को शाब्दिक स्ट्रिंग के रूप में बनाने के लिए कर रहे हैं, लेकिन मुझे लगता है कि यह सिर्फ एक उदाहरण है और आप पहले से बनाए गए कुछ ऑब्जेक्ट को एन्कोड करना चाहते हैं।

+1

इस तरह @Juri को जाना चाहिए यदि वह सर्वर पर जेएसओएन चाहता है। मैं हर समय json2.js लाइब्रेरी का उपयोग करता हूं और यह बहुत अच्छा काम करता है। –

+3

अच्छा होगा अगर jQuery डेटा को स्ट्रिंग करेगा, जैसा कि यह पोस्ट के साथ करता है। – neoneye

+1

अपडेट किया गया लिंक: https://github.com/douglascrockford/JSON-js/blob/master/json2.js – Ben

30

यदि आपको हमेशा अपने एप्लिकेशन में JSON भेजना है, तो आप इसे अपने init में कहीं भी निष्पादित कर सकते हैं और फिर अपने उदाहरण के रूप में डिफ़ॉल्ट $.ajax कॉल का उपयोग कर सकते हैं, और यह हमेशा अजाक्स डिफ़ॉल्ट के बजाय JSON स्ट्रिंग के रूप में क्रमबद्ध होगा क्वेरी स्ट्रिंग।

$.ajaxSetup({ 
    contentType : 'application/json', 
    processData : false 
}); 
$.ajaxPrefilter(function(options, originalOptions, jqXHR) { 
    if (options.data){ 
     options.data=JSON.stringify(options.data); 
    } 
}); 
1
//url: this is a reference to the XML, where you need to define the mapping. 
//<entry key="/getEmpDetails/transEfileGenerate.app"> 
//<bean class="com.adp.ems.framework.spring.MappingItem" p:delegate-ref="efilePageDelegate" 
//p:action="passJSONObjectAndGetWebServiceOutput" /> 

//str1 is the input JSON that you need to pass... Ajax will automatically take care to get the response. 
//</entry> 

var kw = { 
    url : "getEmpDetails/transEfileGenerate.app", 
    timeout : 30000, 
    handleAs : "json", 
    sync: false, 
    putData : str1, 
    headers: { "Content-Type": "application/json"}, 
    load : function(result) { 
}, 
संबंधित मुद्दे