아약스 요청이 비동기이므로 작동하지 않습니다. 경고가 발생하면 시간 초과 값이 반환 된 후 값이 반환됩니다. async: false
을 추가하여 스크립트를 만들 수 있습니다 (jsonp
을 사용하는 도메인 간 요청에 대해서는 동기화 요청을 할 수 없습니다).하지만 요청이 준비 될 때까지 JS가 차단되므로 실제로는 권장하지 않습니다. 나는에 기능을 전달 http://jsfiddle.net/vWnHJ/
예에서 :
function getResult(callback) {
var url = 'https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=mgechev&count=3';
$.ajax({
url: url,
success: function (data) {
if (typeof callback === 'function') {
callback(data);
}
},
dataType: 'jsonp'
});
}
getResult(function (data) {
var variable = data;
alert(variable);
});
JSFiddle : 여기
function getTotalPages(callback) {
var valuePage;
$.getJSON('Data/product.json').
done(function(data) {
$.each(data, function(key, value) {
if (typeof callback === 'function') {
callback(value);
}
});
});
}
당신이 사용하는 비동기 요청을 할 수있는 방법을 예입니다 : 더 나은 방법은 콜백을 사용하는 것입니다
getResult
함수를 호출하고 요청에서받은 데이터로 주어진 함수를 호출하십시오.
감사합니다. 이제 콜백과 함께 다른 변수에 값을 할당하는 방법이 있습니까? – vinaykumar
원하는 변수에 값을 할당 할 수 있습니다 ... 왜, 문제가 어디입니까? – devnull69
callback에서 변수를 할당하려고하지만 콜백 함수에서 값을 가져올 수 없습니다. 그것은 "정의되지 않은"것을 보여주고 있습니다. – vinaykumar