我有疑问,当我进行ajax调用,并且在成功函数中我获得json数据时,我无法使用它成功函数
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function (response) {
getData[name] = response;
}
});
alert(getData[name]);
我的问题是如何在ajax调用中使用getData
答案 0 :(得分:4)
问题是默认情况下Ajax请求是异步的
这意味着ajax将启动请求
然后执行:alert(getData[name]);
然后在后台完成请求并调用成功函数。
所以实际上警报会在成功功能之前执行。
并做你想做的事你必须告诉ajax在完成之前不要执行任何事情,在其他病房集async: false
第二件事你必须在ajax范围之外声明变量,这样你就可以在ajax
最终代码为:
var getData;
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
async: false,
success: function (response) {
getData[name] = response;
}
});
alert(getData[name]);
答案 1 :(得分:1)
你必须在ajax调用之上声明该变量getData [name],以便你可以在它之后进行赋值。
var getData;
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function (response) {
getData[name] = response;
}
});
答案 2 :(得分:1)
应避免使用async false。沿着异步播放并使用.done等事件来处理响应。这可以确保响应的处理与回调时控件的位置无关。你不在乎。
答案 3 :(得分:0)
在代码中使用属性“async:flase”并尝试一次
答案 4 :(得分:0)
AJAX代表
异步 JavaScript和XML。
当您致电if
时,AJAX通话尚未完成,这就是alert
未设置的原因。
您必须在成功回调中调用getData[name]
(或对其执行任何操作)。
alert