2017-08-22 7 views
6

मेरे पास एक रिएक्ट क्लाइंट ऐप है जिसे रेल एपीआई से बात करने की आवश्यकता है। मैं rails-ujs विधि Rails.ajax का उपयोग करना चाहता हूं। उदाहरण के लिए:आप रेलवे में JSON डेटा कैसे भेजते हैं- ujs Rails.ajax POST कॉल (jQuery का उपयोग नहीं कर रहे हैं)?

Rails.ajax({ 
    type: "POST", 
    url: "/things", 
    data: mydata, 
    success: function(repsonse){...}, 
    error: function(repsonse){...} 
}) 

ऐसा लगता है कि मैं इस तरह एक JSON ऑब्जेक्ट को data निर्धारित नहीं कर सकते:

:

mydata = { 
thing: { 
    field1: value1, 
    field2: value2, 
}} 

मैं इसे एक application/x-www-form-urlencoded सामग्री कन्वर्ट करने के लिए इस तरह मैन्युअल रूप से टाइप की जरूरत है

mydata = 'thing[field1]=value1&thing[field2]=value2' 

यह फ्लैट डेटा के लिए ठीक है लेकिन घोंसला वाले डेटा के लिए जटिल हो जाता है।

jQuery अनुरोध करने से पहले स्वचालित रूप से रूपांतरण करता है।

तो मैं सोच रहा हूं कि यदि रेल यूजेएस के पास करने का कुछ स्वचालित तरीका है, लेकिन मुझे दस्तावेज़ या कोड में कुछ भी नहीं मिला।

उत्तर

1

मैंने कई बार AJAX कॉल का उपयोग किया और मैं इस तरह जेसन डेटा भेजता था।

var fd = new FormData(); 
fd.append("jsondata", JSON.stringify(mydata)); 

$.ajax({ 
    url: ... 
    type :"post", 
    data: fd 
    success:function(){ 
    } 
}) 

रूबी नियंत्रक में पार्सिंग जेसन डेटा आसान है। आप केवल JSON.parse(params["jsondata"])
का उपयोग कर सकते हैं उम्मीद है कि यह आपके मामले के लिए काम करता है।

+0

यह काफी है कि मैं क्या तलाश कर रहा हूँ नहीं कर रहा है पार्स करने के लिए JSON.parse उपयोग कर रहा है यह मॉड्यूल। लेकिन आपके उत्तर के लिए धन्यवाद। –

1

मैंने लाइब्रेरी कोड की समीक्षा की और यह इसका समर्थन नहीं करता है क्योंकि ऑब्जेक्ट को भेजने के लिए आपको ऑब्जेक्ट को स्ट्रिंग करना होता है, और ऐसा करने के बाद मुझे पता चला कि लाइब्रेरी जांचती है कि डेटा स्ट्रिंग का प्रकार है या नहीं आवेदन/x-www-form-urlencoded पर अनुरोध का सामग्री प्रकार। यह link लाइब्रेरी में उस स्थिति को दिखाता है। और इसके लिए, इस समस्या को दूर करने का आपका विकल्प एक ऐसी विधि लिखना है जो ऑब्जेक्ट को इनपुट फॉर्म में बदलता है या JQuery अजाक्स या किसी अन्य लाइब्रेरी का उपयोग करता है।

+0

हाँ, आप सही हैं, अहमद। वह कोड है जो मैंने देखा था। मैंने सोचा कि क्या कोई और जगह थी जहां डेटा को पूर्व-प्रोसेस करता था अगर मैं इसे याद करता था। आपके उत्तर के लिए धन्यवाद। –

0

सुनिश्चित नहीं है कि मैं इस मुद्दे को गलत समझ रहा हूं, लेकिन क्या आप JSON.stringify का उपयोग करके अपनी ऑब्जेक्ट को परिवर्तित नहीं कर सकते?

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

निश्चित रूप से मैं रेल-ujs में देख सकते हैं Json प्रतिक्रिया

+0

आप सही हैं, मैं इसे स्वयं परिवर्तित कर सकता हूं। मेरा सवाल यह था कि यदि रेल-यूजे में एक अंतर्निहित तरीका है (जैसे jQuery में, [processData] देखें (http://api.jquery.com/jquery.ajax/))। इसके अलावा, मैं अनुरोध डेटा में JSON के बारे में बात कर रहा हूं, प्रतिक्रिया नहीं। –

+0

मुझे नहीं लगता कि यह करता है, लेकिन यह सुनिश्चित नहीं है कि यह एक बड़ा सौदा क्यों है? यह JSON.stringify के लिए बहुत कम ओवरहेड है। या मैं समझ नहीं पा रहा हूं कि आप क्या करने की कोशिश कर रहे हैं? –

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