가능한 중복 : 나는 WCF 중 하나로, OData 서비스로 이동하고 일부 데이터를 얻을 다음과 같은 자바 스크립트 루틴을 만든
Is it posible to use ajax respone outside of it?JavaScript/JQuery의 범위 문제입니까?
. success 요소에서 결과 변수에 결과를 가져 와서 경고합니다. 반환되는 객체가 있음을 알 수 있습니다. 두 번째 경고를 실행하면 아약스 호출 외부에서 결과를 반환하기 전에 결과 변수가 "정의되지 않음"입니다.
아무도 내가 잘못 가고 있다고 말할 수 있습니까?
function retrieveJsonpODataSet(baseUrl, query)
{
var oDataUrl = baseUrl + "?$format=json&$callback=?";
var results;
$.ajax(
{
url: oDataUrl,
contentType: 'application/json; charset=utf-8',
type: 'GET',
dataType: 'jsonp',
async: false,
success:
function (data, textStatus, xhr)
{
results = data.d;
alert(results); // This shows the results
},
error:
function (xhr, textStatus, errorThrown)
{
alert("Query failed.\n\n" + oDataUrl + "\n\n" + errorThrown);
results = null;
}
});
alert(results); // This shows "undefined"
return results;
}
쿼리 매개 변수를 무시하십시오. 아직 루틴을 완료하지 않았습니다.
편집은 처음에 나는 아약스 호출에는 async:false
없었다. 지금은 추가했지만 문제가 해결되지는 않습니다.
** ** - 동기화. 누군가가 FAQ를 작성해 주실 수 있습니까? –
@MukeshSoni 범위 문제는 아닙니다. –
@Mukesh - 두 번째 부분에 맞습니다 ... 동기적인 문제입니다. 그러나 범위 문제는 아닙니다. 'Results'는 ajax 호출과 내부 클로저 전에 정의되어 있으며 범위는 유효합니다. –