javascript - jQuery Plugin with $.getJSON Returning undefined? -
JQuery के एक प्लगइन के अंदर मुझे बनाया है:
$। GetJSON (base_url, {Agenda_id: defaults.id, क्रिया: defaults.action + defaults.Type, आउटपुट: defaults.output}, फ़ंक्शन (json) {return json;});
और एक अलग जेएस फ़ाइल में (हाँ, यह प्लग इन के बाद आता है):
json = $ ('# एजेंडा-लाइव पूर्वावलोकन') .agenda ({कार्रवाई: 'प्राप्त', टाइप करें: 'एजेंडा', उत्पादन: 'json'}); चेतावनी (json [0] .agenda_id);
अगर मैं ऊपर $ .getJSON करता हूं और $ .getJSON के भीतर एक चेतावनी डालता है और यह "3" देता है, जो सही है। अगर मैं इसे json = $ ('# एजेंडा-लाइव-प्रीव्यू') की तरह करता हूं। एजेंडा (...) ...
यह अनिर्धारित होता है।
मेरा JSON है मान्य है, और जेसन [0] .गेंडा_आईडी भी सही है, मुझे पता है कि यह एक कॉलबैक में है, तो मैं फ़ंक्शन रिटर्न में कॉलबैक के अंदर सामान कैसे प्राप्त करूं?
क्योंकि एक AJAX अनुरोध डिफ़ॉल्ट रूप से अतुल्यकालिक है, अलर्ट ()
AJAX अनुरोध प्राप्त होने से पहले चल रहा है, और Json
परिवर्तनीय इसलिए एक मान नहीं सौंपा गया है।
जो भी कार्यक्षमता आप चाहते हैं (चेतावनी, उदाहरण के लिए) को AJAX अनुरोध करने के लिए कॉलबैक में होना चाहिए, या इसके लिए कॉलबैक के भीतर से कॉल किया जाने वाला एक फ़ंक्शन, या शायद इसका इस्तेमाल करते हुए कहा जाता है।
या शायद आप अपने प्लगइन के लिए एक पैरामीटर के रूप में पास कर सकते हैं, और $। GetJSON ()
callback इसे कॉल करें।
संपादित करें:
सफल होने पर कॉलबैक में जाने का उदाहरण $। GetJSON ()
आर अश्व:
$। Fn.agenda = function (opts) {var defaults = {...} // आपका डिफ़ॉल्ट $। विस्तार (चूक, opts); // अपने ऑप्शंस को $ .getJSON (base_url, {एजेंडे_आईडी: डीफ़ॉल्ट.आईडी, एक्शन: डीफ़ॉल्ट। एक्शन + डीफ़ॉल्ट। टाइप, आउटपुट: डीफ़ॉल्ट.आउटपुट}, फ़ंक्शन (जेएसएन) प्राप्त करने के साथ डिफॉल्ट बढ़ाएं {defaults.success.call ( यह, json); // json में पास 'सफलता' विधि को कॉल करें}}; }; $ ('# एजेंडा-लाइव-प्रीव्यू')। एजेंडा ({क्रिया: 'जाओ', प्रकार: 'एजेंडे', आउटपुट: 'जेसन', सफलता: फ़ंक्शन (डेटा) {// प्लगइन की सफलता के लिए एक फ़ंक्शन पास करें 'संपत्ति चेतावनी (डेटा [0] .agenda_id); चेतावनी ($ (यह) .selector);}});