2012-06-13 13 views
12

मैं यह कैसे निर्दिष्ट करूं कि रेलवे रिमोट के साथ AJAX अनुरोध सबमिट करते समय मैं एक JSON ऑब्जेक्ट वापस लौटा सकता हूं: सही पैरामीटर? और एक बार JSON ऑब्जेक्ट लौटाए जाने के बाद मैं इसे कैसे पकड़ूं और इसका उपयोग कैसे करूं?मैं रेल रिमोट का उपयोग कैसे करूं: जेएसओएन के साथ सही पैरामीटर?

उत्तर

13

आपके विनिर्देशों के आधार पर इसका उत्तर देने के कई तरीके हैं (उदाहरण: आप jquery और UJS एडाप्टर का उपयोग कर रहे हैं) लेकिन मैं एक दस्तावेज़ से सामान पोस्ट करने जा रहा हूं जिसका उपयोग मैं पूरी प्रक्रिया को बेहतर ढंग से समझने के लिए कर रहा हूं: मैं इस ग्रेट post का उपयोग बड़ी डिग्री से करता हूं: मैं अपना उत्तर अपडेट करूंगा क्योंकि मैं वर्तमान में इस सामान के माध्यम से भी काम कर रहा हूं।

आप इस तरह DOM एलीमेंट का डेटा प्रकार विशेषता जोड़ सकते हैं:

<%= link_to "Add a new task", new_project_task_path(@project), "data-type" => "json", :id => "add_task_btn" %> 

तुम भी jQuery के वैश्विक $ .ajaxSetup() फ़ंक्शन में एक डिफ़ॉल्ट डेटाप्रकार परिभाषित कर सकते हैं। परिवर्तन सभी अजाक्स अनुरोध:

$(“#add_some_button”).live(“ajax:beforeSend”, function(e, xhr, settings){ 
     new_data_type = “application/json, text/javascript, */*; q=0.01”; 
     xhr.setRequestHeader('accept', new_data_type); 
}) 

(q = 0.01 0 के बीच प्राथमिकता है और 1)

तो तुम बदल सकते हैं:

$.ajaxSetup({ 
   dataType: 'json' 
}); 

और तीसरा रास्ता beforeSend कॉलबैक में है वह डेटा टाइप करें संपत्ति और HTTP शीर्षलेख आपकी आवश्यकताओं को पूरा करने के लिए। Here

और विशिष्ट जावास्क्रिप्ट मीडिया प्रकार सूची: Here

डेटा स्वरूप का अवलोकन सर्वर से वापस भेजा जा रहा है: 1.) अजाक्स के साथ अनुरोध भेजता है संदर्भ यहाँ के लिए संभव MIME प्रकार की एक सूची है वांछित एमआईएम प्रकार पर सेट हेडर सेट स्वीकार करें। 2.) रेल नियंत्रक यह निर्धारित करने के लिए स्वीकृति हेडर की जांच करता है कि उसे क्या वापस करना चाहिए। 3.) नियंत्रक यह निर्धारित करेगा कि कार्रवाई विशेष MIME प्रकार को संभालती है या नहीं। रेल 3 में हम respond_with का उपयोग कर सकते हैं, पूर्व 3.0 नियंत्रक कार्रवाई में ब्लॉक करने के लिए एक answer_to।

तरीके अजाक्स रेल 3.1 में इस्तेमाल किया जा सकता का अवलोकन:

मुझे विश्वास है कि पसंदीदा तरीका अब स्क्रिप्ट के रूप में डिफ़ॉल्ट डेटाप्रकार उपयोग करने के लिए और इसके बाद एक js.erb या एक js साथ AJAX अनुरोध को संभाल है। कॉफी फाइल

विकल्प: 1.) पर क्लिक करें घटना: डोम तत्वों 2.) अजाक्स 3. के माध्यम से एक प्रपत्र को जमा सम्मिलित करना) अजाक्स 4.) अजाक्स के साथ क्लाइंट-साइड मान्यता के माध्यम से हटाया जा रहा है (एक इनपुट पर डेटा-रिमोट का उपयोग करना फ़ील्ड) 5.) गतिशील चयन जोड़ना (किसी चयनित क्षेत्र पर डेटा-रिमोट का उपयोग करना) 6.) अजाक्स पेजिनेशन - सीधे HTML पर लौटें।

विवरण जो मैं यहां शामिल कर रहा हूं वह मेरी खुद की रूपरेखा/समीक्षा है, कृपया विवरण प्राप्त करने के लिए कृपया एंड्रिया सिंह की महान पोस्ट here देखें।

-4

इस प्रयास करें:

एप्लिकेशन/नियंत्रक/examples.rb

class ExamplesController < ApplicationController 
    def new 
     @my_json = { :message => "Hello json"} 
    end 
end 

एप्लिकेशन/विचारों/उदाहरण/new.html।haml

= link_to "New", new_examples_path :remote => true 

एप्लिकेशन/विचारों/उदाहरण/new.js.erb

console.log("<%= @my_json %>"); 
console.log("<%= @my_json['message'] %>"); 
संबंधित मुद्दे

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