복붙노트

[JQUERY] JQuery와이 - 전역 변수로 아약스 응답을 저장

JQUERY

JQuery와이 - 전역 변수로 아약스 응답을 저장

해결법


  1. 1.그것을 저장하는 경우를 제외하고 주위에 방법은 없습니다. 메모리 페이징이 잠재적 인 문제를 줄여야합니다.

    그것을 저장하는 경우를 제외하고 주위에 방법은 없습니다. 메모리 페이징이 잠재적 인 문제를 줄여야합니다.

    나는이 같은 더 많은 일을 할 대신 'XML'라는 전역 변수를 사용하는 제안 :

    var dataStore = (function(){
        var xml;
    
        $.ajax({
          type: "GET",
          url: "test.xml",
          dataType: "xml",
          success : function(data) {
                        xml = data;
                    }
        });
    
        return {getXml : function()
        {
            if (xml) return xml;
            // else show some error that it isn't loaded yet;
        }};
    })();
    

    다음으로 액세스 :

    $(dataStore.getXml()).find('something').attr('somethingElse');
    

  2. 2.여기에 아주 잘 작업을 수행하는 기능입니다. 나는 일에 위의 우수 답변을 얻을 수 없었다.

    여기에 아주 잘 작업을 수행하는 기능입니다. 나는 일에 위의 우수 답변을 얻을 수 없었다.

    jQuery.extend({
        getValues: function(url) {
            var result = null;
            $.ajax({
                url: url,
                type: 'get',
                dataType: 'xml',
                async: false,
                success: function(data) {
                    result = data;
                }
            });
           return result;
        }
    });
    

    그런 다음 액세스에, 그래서 같은 변수를 만들 :

    var results = $.getValues("url string");
    

  3. 3.이것은 나를 위해 일한 :

    이것은 나를 위해 일한 :

    var jqxhr = $.ajax({
        type: 'POST',       
        url: "processMe.php",
        data: queryParams,
        dataType: 'html',
        context: document.body,
        global: false,
        async:false,
        success: function(data) {
            return data;
        }
    }).responseText;
    
    alert(jqxhr);
    // or...
    return jqxhr;
    

    글로벌 : 거짓, 비동기 :주의하는 것이 중요 거짓 마지막으로 responseText는 $ 아약스 요청에 체인.


  4. 4.이 중 하나를 수행 할 필요가 없습니다. 나는 내 프로젝트와 같은 문제 다 퉜다. 당신이하는 일은 전역 변수를 재설정 성공 콜백 내부 함수 호출을 할 수 있습니다. 만큼 당신이 false로 비동기 자바 스크립트 세트를 가지고 그것을 제대로 작동합니다. 여기 내 코드입니다. 희망이 도움이.

    이 중 하나를 수행 할 필요가 없습니다. 나는 내 프로젝트와 같은 문제 다 퉜다. 당신이하는 일은 전역 변수를 재설정 성공 콜백 내부 함수 호출을 할 수 있습니다. 만큼 당신이 false로 비동기 자바 스크립트 세트를 가지고 그것을 제대로 작동합니다. 여기 내 코드입니다. 희망이 도움이.

    var exists;
    
    //function to call inside ajax callback 
    function set_exists(x){
        exists = x;
    }
    
    $.ajax({
        url: "check_entity_name.php",
        type: "POST",
        async: false, // set to false so order of operations is correct
        data: {entity_name : entity},
        success: function(data){
            if(data == true){
                set_exists(true);
            }
            else{
                set_exists(false);
            }
        }
    });
    if(exists == true){
        return true;
    }
    else{
        return false;
    }
    

    이 당신을 도움이되기를 바랍니다.


  5. 5.당신은 그들이 접근 세계적만큼 쉽게, DOM 요소에 응답 값을 저장 찾을 수 있습니다 :

    당신은 그들이 접근 세계적만큼 쉽게, DOM 요소에 응답 값을 저장 찾을 수 있습니다 :

    <input type="hidden" id="your-hidden-control" value="replace-me" />
    
    <script>
        $.getJSON( '/uri/', function( data ) {
            $('#your-hidden-control').val( data );
        } );
    </script>
    

    이 false로 설정 비동기를 필요로하지 않는 장점이 있습니다. 분명히,이 적절한 지 여부를 당신이 달성하려고하는지에 따라 달라집니다.


  6. 6.문제는 그 문제에 실행하는 "성공"기능과 당신이 당신의 변수에서 데이터를 꺼내려고하는 시간 사이 단지 서버 지연에 대한 로컬 또는 글로벌 범위와 관련되지 않을 수 있습니다.

    문제는 그 문제에 실행하는 "성공"기능과 당신이 당신의 변수에서 데이터를 꺼내려고하는 시간 사이 단지 서버 지연에 대한 로컬 또는 글로벌 범위와 관련되지 않을 수 있습니다.

    기회는 당신이 아약스 "성공"기능 화재 전에 변수의 내용을 인쇄 할 수 있습니다.


  7. 7.

            function getJson(url) {
                return JSON.parse($.ajax({
                    type: 'GET',
                    url: url,
                    dataType: 'json',
                    global: false,
                    async: false,
                    success: function (data) {
                        return data;
                    }
                }).responseText);
            }
    
            var myJsonObj = getJson('/api/current');
    

    이 작품!


  8. 8.

         function get(a){
                bodyContent = $.ajax({
                      url: "/rpc.php",
                      global: false,
                      type: "POST",
                      data: a,
                      dataType: "html",
                      async:false
                   } 
                ).responseText;
                return bodyContent;
    
      }
    

  9. 9.너무이 다 퉜다. 답변 많은 아직, 내가 갈거야 하나의 간단한 올바른가 제공합니다. 열쇠는 당신의 $ 아약스 call..sync을 만드는 것입니다!

    너무이 다 퉜다. 답변 많은 아직, 내가 갈거야 하나의 간단한 올바른가 제공합니다. 열쇠는 당신의 $ 아약스 call..sync을 만드는 것입니다!

    $.ajax({  
        async: false, ...
    

  10. 10.정말 이벤트의 "document.ready"단계에서 내 변수에 jQuery를 아약스의 결과를 얻는 고투.

    정말 이벤트의 "document.ready"단계에서 내 변수에 jQuery를 아약스의 결과를 얻는 고투.

    페이지가 이미로드 한 후 사용자가 선택 상자의 "onchange를"이벤트를 트리거 할 때 jQuery의 아약스는 내 변수에로드,하지만 페이지가 처음로드 될 때 데이터는 변수를 공급하지 않을 것입니다.

    나는 많은, 많은, 많은 다른 방법을 시도했지만 결국, 나를 위해 최선을 다했다 찰스 Guilbert의 방법이었다.

    찰스 Guilbert에 경의를! 그의 대답을 사용하여, 나는 나의 변수로 데이터를받을 경우에도 내 페이지가 처음로드 될 수 있어요.

    여기에 작업 스크립트의 예입니다 :

        jQuery.extend
        (
            {
                getValues: function(url) 
                {
                    var result = null;
                    $.ajax(
                        {
                            url: url,
                            type: 'get',
                            dataType: 'html',
                            async: false,
                            cache: false,
                            success: function(data) 
                            {
                                result = data;
                            }
                        }
                    );
                   return result;
                }
            }
        );
    
        // Option List 1, when "Cats" is selected elsewhere
        optList1_Cats += $.getValues("/MyData.aspx?iListNum=1&sVal=cats");
    
        // Option List 1, when "Dogs" is selected elsewhere
        optList1_Dogs += $.getValues("/MyData.aspx?iListNum=1&sVal=dogs");
    
        // Option List 2, when "Cats" is selected elsewhere
        optList2_Cats += $.getValues("/MyData.aspx?iListNum=2&sVal=cats");
    
        // Option List 2, when "Dogs" is selected elsewhere
        optList2_Dogs += $.getValues("/MyData.aspx?iListNum=2&sVal=dogs");
    

  11. 11.나는 스레드가 오래 알고 있지만 나는이 유용하게 찾을 수있는 다른 사람을 생각했다. jquey.com에 따르면

    나는 스레드가 오래 알고 있지만 나는이 유용하게 찾을 수있는 다른 사람을 생각했다. jquey.com에 따르면

    var bodyContent = $.ajax({
      url: "script.php",
      global: false,
      type: "POST",
      data: "name=value",
      dataType: "html",
      async:false,
      success: function(msg){
         alert(msg);
      }
    }).responseText;
    

    직접 문자열로 결과를 얻을 도움이 될 것이다. .responseText 참고; 부품.


  12. 12.IMO는 글로벌 변수에이 데이터를 저장할 수 있습니다. 그러나 좀 더 고유 한 이름을 사용하거나 네임 스페이스를 사용하는 것이 더 좋을 것입니다 :

    IMO는 글로벌 변수에이 데이터를 저장할 수 있습니다. 그러나 좀 더 고유 한 이름을 사용하거나 네임 스페이스를 사용하는 것이 더 좋을 것입니다 :

    MyCompany = {};

    ... MyCompany.cachedData 데이터를 =;

    그리고 또한 이러한 목적을 위해 JSON 사용하는 것이 좋습니다, JSON 형식의 데이터는 일반적으로 XML 형식의 동일한 데이터보다 훨씬 작다.


  13. 13.데이터 자체를 저장으로 캐시처럼 사용할해야 할 변수 "XML"을, 그리고 : 나는 서버에서 가져 오는 큰 XML 파일을 피해야하는 것이 좋습니다 것입니다.

    데이터 자체를 저장으로 캐시처럼 사용할해야 할 변수 "XML"을, 그리고 : 나는 서버에서 가져 오는 큰 XML 파일을 피해야하는 것이 좋습니다 것입니다.

    대부분의 경우, 캐시를 검사하고 당신이 원하는 데이터를 얻을 수있는 서버에 요청을 할 필요가 있는지 확인하는 것이 가능하다. 이 앱은 가볍고 빠르게 만들 것입니다.

    환호, JRH.


  14. 14.갔지 응답은 기본적으로 캐시됩니다. 따라서 당신이 정말로 원하는 결과를 얻기 위해 아무것도 할 필요가있다.

    갔지 응답은 기본적으로 캐시됩니다. 따라서 당신이 정말로 원하는 결과를 얻기 위해 아무것도 할 필요가있다.


  15. 15.이전의 대답과 유사 :

    이전의 대답과 유사 :

    <script type="text/javascript">
    
        var wait = false;
    
        $(function(){
            console.log('Loaded...');
            loadPost(5);
        });
    
        $(window).scroll(function(){
          if($(window).scrollTop() >= $(document).height() - $(window).height()-100){
            // Get last item
            var last = $('.post_id:last-of-type').val();
            loadPost(1,last);
          }
        });
    
        function loadPost(qty,offset){
          if(wait !== true){
    
            wait = true;
    
            var data = {
              items:qty,
              oset:offset
            }
    
            $.ajax({
                url:"api.php",
                type:"POST",
                dataType:"json",
                data:data,
                success:function(data){
                  //var d = JSON.parse(data);
                  console.log(data);
                  $.each(data.content, function(index, value){
                    $('#content').append('<input class="post_id" type="hidden" value="'+value.id+'">')
                    $('#content').append('<h2>'+value.id+'</h2>');
                    $('#content').append(value.content+'<hr>');
                    $('#content').append('<h3>'+value.date+'</h3>');
                  });
                  wait = false;
                }
            });
          }
        }
    </script>
    

  16. 16.그냥 사용합니다. 간단하고 효과적인 :

    그냥 사용합니다. 간단하고 효과적인 :

    var y;
    
    function something(x){
    return x;
    }
    
    $.get(bunch of codes, function (data){
    
    y=something(data);
    )}
    
    //anywhere else
    console.log(y);
    
  17. from https://stackoverflow.com/questions/905298/jquery-storing-ajax-response-into-global-variable by cc-by-sa and MIT license