programing

Jquery - Ajax jSON 응답을 변수로 저장

newnotes 2023. 9. 2. 10:12
반응형

Jquery - Ajax jSON 응답을 변수로 저장

저는 Ajax 요청 결과를 외부에서 액세스할 수 있는 변수로 설정하려고 합니다.나는 이 JQuery를 사용해 보았습니다 - Ajax 응답을 글로벌 변수에 저장하지만 나의 변수.beer정의되지 않은 상태로 남아 있습니다.$.getJSON그리고.$.ajax기능(두 가지 모두 시도해 보았습니다).

여기 내 코드가 있고 어디서 결과를 볼 수 있는지 확인할 수 있습니까?console.log(beer).

var beer;
$.getJSON(jsonUrl, function (json) {
    beer = json;
    console.log(beer); // returns beer
});
console.log(beer); // returns undefined

var beer = (function () {
    var result;

    $.ajax({
        url: jsonUrl,
        success: function (data) {
            result = data;
            console.log(beer); // returns beer

        }
    });
    console.log(result); // returns undefined
    if (result) return result;
})();
console.log(beer); // returns undefined

이는 비동기 요청이므로 실행 중지되지만 스크립트는 계속 진행하기 전에 응답을 기다리지 않습니다.Ajax 요청이 완료될 때까지 기다려야 하는 경우 다음과 같은 방법을 사용해 보십시오.

var beer;
$.getJSON(jsonUrl,function(json){
    beer = json;   
    checkDrink();                
});         

function checkDrink() {
    console.log(beer);
}   

아래 코드를 제안합니다.

var beer = $.ajax({
    url: jsonUrl,
    async: false,
    dataType: 'json'
}).responseJSON;

주요 순간은 다음과 같습니다.

  1. 세트async결과를 변수로 반환하고 성공 콜백을 비동기식으로 호출하지 않음을 false로 반환합니다.
  2. 세트dataTypetod json - 서버 응답 문자열을 json으로 구문 분석합니다.

문제는 데이터가 서버에서 실제로 돌아오기 전에 데이터에 액세스하려고 한다는 것입니다. '성공' 기능은 실제로 Ajax 호출이 성공적으로 완료될 때 호출되는 콜백입니다.$.ajax(또는 $.get) 함수가 즉시 반환됩니다.

성공 콜백 내의 '맥주' 변수에 데이터를 넣었다는 것을 관심 있는 함수에 어떻게든 알려야 합니다.

언급URL : https://stackoverflow.com/questions/4763918/jquery-store-ajax-json-response-as-variable

반응형