Ajax调用输出到全局变量

时间:2015-06-15 09:15:12

标签: javascript jquery ajax

如何将ajax调用的输出分配给全局变量,以便可以在ajax调用之外使用输出?

var filterarray=new Array();
$.ajax({
            type: "GET",
            url: uri,
            dataType : "json",
            contentType : "application/json",           
            data: {
                input:filtervalue
            },  
            cache: false,
            success : function(response) {
                filterarray = response;
                console.log(response);

                });
            },
            error: function(error) { 
                console.log(error);
            }
            });
    }

5 个答案:

答案 0 :(得分:0)

假设您有ajax文档中的这个简单示例:

$.ajax({
  url: "test.html",
  context: document.body
}).done(function() {
  $( this ).addClass( "done" );
});

如您所见,在所有回调中添加contextthis引用:

  

所有回调中的this引用是上下文中的对象   选项在设置中传递给$ .ajax;如果未指定上下文,   这是对Ajax设置本身的引用。

您也可以将变量附加到window

答案 1 :(得分:0)

您可以将值分配给全局变量,就像代码中的任何其他位置一样。

var value;

$.ajax().done(function(responseValue) {
    value = responseValue;
});

虽然问题是这段代码是异步的,如果你试图在调用完成之前访问该值,例如在$.ajax块之后,该值将是未定义的。 jQuery $.ajax调用返回Promise的实现,因此这是一个更好的做法:

var ajaxPromise = $.ajax(...);
// ...

// here you want to access value form ajax call:
ajaxPromise.done(function(value) {
    // do something with value
});

有关承诺的好处在于,您可以多次致电.done并始终使用value解决,即使之前已经使用过。{1}}也是如此。

答案 2 :(得分:0)

试试这个:

var result; 
$.ajax({ 
       type: "POST", 
       async: false, 
       url: url, 
       data: postdata, 
       dataType: "json", 
       success: function (data) { 
       result= data; 
   } });
result = jQuery.parseJSON(result);

此处async:false用于将ajax返回值存储到全局result变量。

让我知道这些代码片段的工作与否。

答案 3 :(得分:0)

Ajax是异步的。因此,代码执行后可能会得到响应。

var filterarray=new Array();
$.ajax({
            type: "GET",
            url: uri,
            dataType : "json",
            contentType : "application/json",           
            data: {
                input:filtervalue
            },  
            cache: false,
            success : function(response) {
                filterarray = response;
                // do what ever you want to do with response here.



                });
            },
            error: function(error) { 
                console.log(error);
            }
            });
    }

答案 4 :(得分:0)

function getJson(url){      返回JSON.parse($。ajax({          类型:'GET',          url:url,          dataType:'json',          全球:假,          异步:假的,          数据:{                 过滤器:值             },          成功:函数(数据){              返回数据;          }      })的responseText)。     }

上面的代码解决了我的问题