ruby on rails - Read cross domain JSON response -


  & lt; स्क्रिप्ट & gt; $ .ajaxSetup ({contentType: 'application / json'}); फ़ंक्शन submit_data (f) {चेतावनी ('सबमिट करना') var data_string = $ (f) .serialize (); $ .एजएक्स ({url: "http: // localhost: 3000 / application / 1 / contact_us.json? Jsonpcallback =?" + डेटा_स्ट्रिंग, डेटा प्रकार: "jsonp", प्रकार: 'पोस्ट', प्रक्रिया डेटा: गलत, क्रॉसआदेश: सच , कंटेंट टाइप: "एप्लिकेशन / जेसन", जेसनपी: झूठे, जेसनपीकॉलबैक: रिजल्ट ()}); } फ़ंक्शन परिणाम () {चेतावनी ('बैक इन') चेतावनी (डेटा)} फ़ंक्शन jsonp1300279694167 () {चेतावनी ('धूम')} & lt; / script & gt;   

मेरे पास डोमेन भर में पूछताछ के ऊपर लिपिक और एक फॉर्म के अंदर डेटा पोस्ट करना है।
सब कुछ ठीक काम करने लगता है। फ़ायरबग कंसोल में JSON प्रतिक्रिया देखा जा सकता है मैं उपयोगकर्ता के अनुसार प्रतिक्रिया और प्रदर्शन स्थिति संदेश को संसाधित करना चाहता हूं। मुझे इसे कैसे प्राप्त करना चाहिए?


UPDATE

मैंने टी.जे. Crowder लेकिन अभी तक कोई किस्मत नहीं है संशोधित कोड नीचे दिया गया है

  function submit_data (f) {alert ('submitting') var data_string = $ (f)। Serialize (); $ .एजेक्स ({url: "http: // स्थानीयहोस्ट: 3000 / एप्लिकेशन / 1 / संपर्क_स.जेसन?" + डेटा_स्ट्रिंग, डेटाप्रकार: "जेएसओएनपी", क्रॉसडामैन: सत्य, सफलता: हैंडलसूट ()}); } फ़ंक्शन हैंडल सफलता (डेटा) {चेतावनी ("कॉल पूर्ण सफलतापूर्वक"); चेतावनी (डेटा); }   

यह एक्सेस नहीं करता है डेटा और अलर्ट अपरिभाषित । अगर मैं इसे सफलता से निपटने की कोशिश करता हूं: संभाल () यह त्रुटि और एक HTTP अनुरोध के साथ रीडायरेक्ट करता है।

मुझे एक रेल से रेलिंग पर प्रतिक्रिया मिल रही है आवेदन यहाँ विधि है मैं मार रहा हूँ

  def बनाने त्रुटियाँ = ContactUsForm.validate_fields (params) logger.info errors.inspect अगर errors.blank? Response_to do | format | Format.json {रेंडर: जेसन = & gt; {: स्थिति = & gt; 'सफलता'}। To_json} और बाकी सबको उत्तर दें | प्रारूप | Format.json {रेंडर: जेसन = & gt; {: स्थिति = & gt; 'विफलता',: त्रुटियाँ = & gt; त्रुटियों} .to_json} एंड एंड एंड एंड   

क्या कोई ऐसी चीज़ है जिसे मुझे अपने रेल ऐप में कॉन्फ़िगर करना होगा

आप करीब हैं आप सामान्य रूप से सफलता कॉलबैक का उपयोग करते हैं (डॉक्स देखें), विशेष नहीं:

  $। Ajax ({url: "http: // localhost: 3000 / application / 1 / contact_us.json? Jsonpcallback =? "+ Data_string, डेटाप्रकार:" jsonp ", टाइप करें: 'पोस्ट', प्रक्रिया डेटा: गलत, क्रॉसडामेनः सच, कंटेंट टाइप:" एप्लिकेशन / जेसन ", जेसनपी: गलत, सफलता : फ़ंक्शन (डेटा) {// यहां डेटा का उपयोग करें}});   

इसके अलावा, आपका कोड:

  jsonpresponse: परिणाम ()   

... होगा कॉल करें परिणाम फ़ंक्शन और उसके बाद jsonpresponse एजेक्स कॉल की संपत्ति के लिए इसका रिटर्न वैल्यू का उपयोग करें। यदि आप एक अलग फ़ंक्शन का उपयोग करना चाहते हैं, तो ठीक है, लेकिन आप () को शामिल नहीं करते हैं, इसलिए:

  $। Ajax ({url: "http : // localhost: 3000 / application / 1 / contact_us.json? Jsonpcallback =? "+ Data_string, डेटा प्रकार:" jsonp ", प्रकार: 'पोस्ट', प्रक्रिया डेटा: गलत, क्रॉसडामेन: सही, contentType:" application / json ", Jsonp: गलत, सफलता: परिणाम}); फ़ंक्शन परिणाम (डेटा) {// का उपयोग `डेटा 'यहां}   

इसके अलावा, मुझे पूरा यकीन है कि आपको jsonp पैरामीटर की आवश्यकता नहीं है आप सफलता का उपयोग करते हैं:

  $। Ajax ({url: "http: // localhost: 3000 / application / 1 / contact_us.json? Jsonpcallback =? "+ डेटा_स्ट्रिंग, डेटाटाइप:" जेएसओएनपी ", प्रकार: 'पोस्ट', प्रक्रिया डेटा: गलत, क्रॉसडामैनः सच, कंटेंट टाइप:" एप्लिकेशन / जेसन ", सफलता: परिणाम}); फ़ंक्शन परिणाम (डेटा) {// का उपयोग करें `डेटा` यहां}   

अंत में: क्या आप सुनिश्चित हैं आप contentType को सेट करना चाहते हैं? यह उस सामग्री से संबंधित है जो को सर्वर पर भेजा जाता है, न कि उस सामग्री से प्राप्त किया जा रहा है यदि आप वास्तव में सर्वर पर JSON- एन्कोडेड डेटा पोस्ट कर रहे हैं, महान, आप ठीक हैं; लेकिन ऐसा लगता है कि आप jQuery के serialize फ़ंक्शन का उपयोग कर रहे हैं, जो JSON उत्पादन नहीं करेगा (यह एक यूआरएल-एन्कोडेड डाटा स्ट्रिंग पैदा करता है)। तो आप शायद कॉल से और ajaxsetup कॉल से contentType को हटाना चाहते हैं।

Comments