2009-08-04 22 views
5
String.prototype.getLanguage = function() { 
     $.getJSON('http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=' + this + '&callback=?', 
      function(json) { 
       return json.responseData.language; 
      }); 
    }; 

मैं कॉलर मूल्य पर मूल्य कैसे वापस कर सकता हूं? धन्यवाद।jQuery getJSON - कॉलर फ़ंक्शन पर वापसी मूल्य

संपादित करें:

String.prototype.getLanguage = function() { 
     var returnValue = null; 

     $.getJSON('http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=' + this + '&callback=?', 
      function(json) { 
       returnValue = json.responseData.language; 
      }); 

     return returnValue; 
    }; 

लेकिन यह या तो काम नहीं कर रहा: मैं इस कोशिश की है। यह शून्य आता है।

उत्तर

6

मैं तुम्हें एक तुल्यकालिक घटना का उपयोग करने के लिए इतना है कि अपने String.prototype.getLanguage() फ़ंक्शन सिर्फ JSON वापस आ जाएगी चाहते हैं यह सोचते हैं रहा हूँ। दुर्भाग्य से आप एक दूरस्थ एपीआई से jQuery के साथ ऐसा नहीं कर सकते हैं।

जहां तक ​​मुझे पता है कि jQuery synchronous XMLHttpRequest objects का समर्थन नहीं करता है, और यहां तक ​​कि अगर ऐसा होता है, तो आपको same-origin policy के प्रतिबंधों से परहेज करते समय सिंक अनुरोध करने के लिए अपने सर्वर पर प्रॉक्सी होना आवश्यक होगा।

हालांकि, आप JSONP के लिए jQuery के समर्थन का उपयोग करके जो भी करना चाहते हैं, कर सकते हैं। हम सिर्फ एक कॉलबैक का समर्थन करने के String.prototype.getLanguage() लिखते हैं:

String.prototype.getLanguage = function(callback) { 
    var thisObj = this; 
    var url = 'http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=' + this + '&callback=?'; 

    $.getJSON(url,function(json) { 
       callback.call(thisObj,json.responseData.language); 
    }); 
} 

तो हम इस तरह के रूप फ़ंक्शन का उपयोग कर सकते हैं:

'this is my string'.getLanguage(function(language) { 
    //Do what you want with the result here, but keep in mind that it is async! 
    alert(this); 
    alert(language); 
}); 
+0

धन्यवाद, कि एक अच्छा विचार है। –

1
var test = function(fun) 
{ 

String.prototype.getLanguage = function() { 
     .getJSON('http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=' + this + '&callback=?', 
      function(json) { 
       fun.call(json.responseData.language); 
      }); 
    }; 

}; 

test(retCall); 

var retCall = function(xjson){ 
    alert(xjson); 
}; 
संबंधित मुद्दे