如何将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);
}
});
}
答案 0 :(得分:0)
假设您有ajax
文档中的这个简单示例:
$.ajax({
url: "test.html",
context: document.body
}).done(function() {
$( this ).addClass( "done" );
});
如您所见,在所有回调中添加context
集this
引用:
所有回调中的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)。 }
上面的代码解决了我的问题