문제

    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);
};
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top