jQuery getjson- 발신자 함수에 대한 값을 반환합니다
-
22-07-2019 - |
문제
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;
});
};
값을 발신자 값으로 반환하려면 어떻게해야합니까? 감사.
편집하다: 나는 이것을 시도했다 :
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;
};
그러나 그것은 작동하지 않습니다. Null을 반환합니다.
해결책
String.prototype.getLanguage () 함수가 JSON을 반환하도록 동기 이벤트를 사용한다고 가정합니다. 불행히도 원격 API의 jQuery로는 그렇게 할 수 없습니다.
내가 아는 한 jQuery는 지원하지 않습니다 동기식 xmlhttprequest 객체, 그리고 그랬더라도 서버에 프록시가 있어야합니다. 동일한 원래 정책.
그러나 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);
});
다른 팁
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);
};
제휴하지 않습니다 StackOverflow