दिलचस्प पोस्ट
OBJMTLLoader के माध्यम से लोड ऑब्जेक्ट पर तीन। जेएस एकाधिक सामग्री कैसे टॉमकेट पर सीडीआई स्थापित और उपयोग करें? Centos 7 – खुले फ़ायरवॉल पोर्ट Node.js postgresql मॉड्यूल का उपयोग करने का सही तरीका क्या है? काउंटडाउनलाच बनाम सेमाफोर पायथन नेस्टेड लूपिंग इडियाम स्रोत और वितरकों की भूमिका क्या है? मैं सी # में प्रक्रिया द्वारा खुली फ़ाइल की सूची कैसे प्राप्त करूं? एएसपी.नेट क्या अन्य नियंत्रणों के नियंत्रण में कोई बेहतर तरीका है? एक फ़ॉर्म लोड किए जाने के बाद मैं कोड कैसे निष्पादित करूं? अपवाद मैपर्स का उपयोग करके जेएक्स-आरएस परीक्षण प्रयोजनों के लिए ब्राउज़र में सीएसएस को अक्षम कैसे करें मैं बाश उपनाम में पैरामीटर कैसे शामिल करूं? Android पर क्वेरी स्ट्रिंग पार्स करना कैसे Magento मॉड्यूल में एक क्रॉन नौकरी सेटअप करने के लिए?

क्या $ मिलियन का एक संस्करण है जो कॉल वापस उपयोग नहीं करता है?

मैं एक 3rdparty javascript पुस्तकालय के लिए एक कॉलबैक लागू कर रहा हूं और मुझे मान वापस करने की आवश्यकता है, लेकिन मुझे सर्वर से मान प्राप्त करने की आवश्यकता है मुझे ऐसा कुछ करने की आवश्यकता है:

3rdPartyObject.getCustomValue = function { return $.getJSON('myUrl'); } 

getJson XMLHttpRequest का उपयोग करता है (जो मुझे विश्वास है) में तुल्यकालिक और अतुल्यकालिक व्यवहार दोनों हैं, क्या मैं सिंक्रोनाउस व्यवहार का उपयोग कर सकता हूं?

Solutions Collecting From Web of "क्या $ मिलियन का एक संस्करण है जो कॉल वापस उपयोग नहीं करता है?"

JQuery के स्रोत कोड को देखकर, यह सब $.getJSON करता है:

 getJSON: function( url, data, callback ) { return jQuery.get(url, data, callback, "json"); }, 

और यह सब $.get है।

 get: function( url, data, callback, type ) { // shift arguments if data argument was omitted if ( jQuery.isFunction( data ) ) { callback = data; data = null; } return jQuery.ajax({ type: "GET", url: url, data: data, success: callback, dataType: type }); }, 

वहां कोई काला जादू नहीं है चूंकि आपको मूल $.getJSON कार्यक्षमता के अलावा सामान को कस्टमाइज़ करने की ज़रूरत है, तो आप केवल निम्न स्तर के $.ajax फ़ंक्शन का उपयोग कर सकते हैं और async विकल्प को गलत के रूप में पास कर सकते हैं:

 $.ajax({ type: 'GET', url: 'whatever', dataType: 'json', success: function() { }, data: {}, async: false }); 

आप अपनी कॉल करने से पहले निम्न का उपयोग भी कर सकते हैं:

 $.ajaxSetup( { "async": false } ); 

मुझे "async" संपत्ति का दायरा नहीं पता है, मुझे संदेह है कि यह वैश्विक विन्यास है। तो विचार करें कि क्या आप अपने तुल्यकालिक कॉल के बाद इसे वापस सही पर बदलना चाहते हैं।

उदाहरण:

 3rdPartyObject.getCustomValue = function { $.ajaxSetup( { "async": false } ); var result = $.getJSON('myUrl'); $.ajaxSetup( { "async": true } ); return result; } 
 var jsonObjectInstance = $.parseJSON( $.ajax( { url: "json_data_plz.cgi", async: false, dataType: 'json' } ).responseText ); 

लेकिन जब तक मैं यह कोड गलत नहीं हूँ काम नहीं करेगा:

 3rdPartyObject.getCustomValue = function { var json = $.ajax({ type: 'GET', url: 'whatever', dataType: 'json', success: function() { }, data: {}, async: false }); return json; } 

$ .एजैक के रूप में एक्सएचआर ऑब्जेक्ट को पार्स किए गए जेसन ऑब्जेक्ट नहीं देता

आपको कुछ और करना होगा:

 var jsonLoader = function(url){ this.url = url; this.rawData = {}; this.getRawData(); }; jsonLoader.prototype.getRawData = function(){ var json = $.ajax({ type: 'GET', url: this.url, dataType: 'json', success: this.getRawData(this), data: {}, async: false }); }; jsonLoader.prototype. getRawData = function(self){ return function(json){self.rawData = json;}; }; var loadMe = new jsonLoader("Data.json"); loadMe.rawData //has the parsed json object 

वास्तव में संभवतः उसी को प्राप्त करने का एक बहुत अच्छा तरीका है

अगर किसी को कभी रेल में ऐसा करना पड़ता है, तो मुझे इस तरह से एक बहुत ही स्वच्छ तरीके से किया जाता है:

इस तरह अपना नियंत्रक सेटअप करें:

 def my_ajax_action respond_to do |format| # if you use render, you won't need a view page, the ":json =>" part takes care of all # the formatting format.json { render :json => @variable_containing_json } end end 

जावास्क्रिप्ट में कॉल सेटअप करें

 function doAjaxWork( ) { var ret; $.ajax({ type: 'GET', url: '/controller/action/param', dataType: 'json', complete: function(response) { ret = eval('(' + response.responseText + ')'); }, async: false }); return ret; } 

बेशक, इस सिंक सामान नहीं करते जब तक आप के लिए नहीं है ओह, और जब मैं इसमें यूआरएल के साथ जावास्क्रिप्ट दिखा रहा हूँ, जेएसआरओट्स की जांच करें … यह वास्तव में साफ है

एसिंक प्रॉपर्टी का दायरा वैश्विक है, आपकी विधि कॉल को सिंक्रनाइज़ करेगा।