jquery - Grails controller sending weird JSON back to browser -
मेरे पास एक Grails (2.3.6) ऐप है जिसमें एक HTML फार्म दो & lt; select / & gt; / कोड> उसमें तत्व: एक है जो उपयोगकर्ताओं को एक
देश
चुनने की अनुमति देता है और उसके बाद, एक राज्य
जब उपयोगकर्ता एक नया देश
का चयन करता है, तो मैं राज्य
तत्व का चयन करें। ऐसा करने के लिए, देश परिवर्तन ()
पर, मुझे राज्य
& lt; div class = "blah" & gt; & Lt; लेबल = "राज्य" & gt; राज्य & lt; / label & gt; & lt; br / & gt; & Lt; g: चुनें आईडी = "राज्य" नाम = "राज्य" से = "$ {states}" / & gt; & Lt; / div & gt; & Lt; स्क्रिप्ट प्रकार = "टेक्स्ट / जावास्क्रिप्ट" & gt; JQuery ('# देश')। परिवर्तन (फ़ंक्शन () {var देशनाम = $ ('# विकल्प: चयनित')। Val (); jQuery.ajax ({url: "getStateListByCountry", प्रकार: "मिलना", डेटा प्रकार : 'जेसन', डेटा: {देशनाम: देशनाम}, सफलता: फ़ंक्शन (डेटा) {चेतावनी ("सर्वर से निम्नलिखित प्राप्त:" + डेटा); $ ("# स्थिति विकल्प")। निकालें (); $। डेटा, फ़ंक्शन (कुंजी, मान) {$ ('# राज्य') .एपेंड ($ ("& lt; विकल्प & gt; & lt; / option & gt;") .attr ("value", key) .text (value));} );}, त्रुटि: फ़ंक्शन (xhr) {चेतावनी (xhr.responseText); // & lt; ---- TODO: बदलें}});}); & Lt; / स्क्रिप्ट & gt;
और फिर, Grails / सर्वर पक्ष पर:
वर्ग MyController {// वापसी करने के लिए डमी डेटा के साथ इस stub। Def getStateListByCountry () {सूची & lt; स्ट्रिंग & gt; States = new ArrayList & lt; स्ट्रिंग & gt; () states.add ("NY") states.add ("NH") states.add ("VT") println "निम्नलिखित ब्राउज़र पर वापस भेज रहा है: $ {states}।" राइट}}
रनटाइम पर, जब मैं ' #country
' में एक नया देश चुनता हूं, तो मुझे Grails ऐप लॉग में निम्न संदेश दिखाई देता है: < / P>
ब्राउज़र में निम्नलिखित वापस भेज रहा है: [NY, NH, VT]।
लेकिन तब ब्राउज़र में मुझे एक चेतावनी (.. ।)
प्रिंट करता है मेरे कस्टम "पृष्ठ नहीं मिला" त्रुटि पृष्ठ का HTML!
इसके अलावा मेरे ' #state
' का चयन करें 3 डमी राज्य मूल्यों के साथ अद्यतन नहीं है तो Grails सर्वर सही ढंग से क्लाइंट अनुरोध प्राप्त कर रहा है, और मेरी डमी राज्य सूची को वापस भेजने का प्रयास करता है, लेकिन जिस तरह से एक "पृष्ठ नहीं मिला" टेम्पलेट वापस मिल रहा है या मेरे कोड में क्या गलत है
अपडेट
ऐसा लगता है कि मेरा त्रुटि
फ़ंक्शन निष्पादित हो रहा है, और विचित्र एचटीएमएल मैं चेतावनी के अंदर देख रहा हूं वास्तव में xhr.responsetext
उस विधि में पारित किया गया है।
< पी> Grails सर्वर लॉग में किसी भी त्रुटि रिपोर्टिंग नहीं कर रहा है, और println
में getStateListByCountry
विधि पुष्टि करती है कि JSON क्लाइंट को वापस आ गया है [ "न्यूयॉर्क", "VT", "राष्ट्रीय राजमार्ग"]
। तो ऐसा लगता है कि सर्वर किसी त्रुटि को लौट रहा है, और jQuery त्रुटि
हैंडलर, नहीं सफलता हैंडलर ... विचारों को निष्पादित कर रहा है?
एक को जोड़ने का प्रयास करें: "JSON के रूप में" राज्यों में:
JSON के रूप में बताता है:
संपादित करें:
smeeb, मैंने यहां एक परीक्षण वातावरण बनाया और अपना बदल लिया है:
jQuery.ajax ( {Url: "नियंत्रक नाम / getStateListByCountry", प्रकार: "पाने के लिए", डेटा: देशनाम,
एक्ट्रीओ से पहले नियंत्रक नाम का उपयोग करने के लिए, डेटा प्रकार के लिए कोई ज़रूरत नहीं है, और इस पर वापसी: <पूर्व> JSON के रूप में राज्यों को प्रस्तुत करना
और यह काम करता है, क्या आप इसका प्रयास कर सकते हैं?
Comments
Post a Comment