可能重复:
return from jquery ajax call
jQuery: Return data after ajax call success
$.ajax({
url:"list.php",
dataType: "json",
success: function(resp){
for(var i=0;i<resp.length;i++){
$('#goods_list').append(
"<h3>" + resp[i]["name"] + "</h3>"
+
"<div>Price: NT$" + resp[i]["price"] + "<br />"
+
resp[i]["description"]
+
"<hr /> <a href=# alt='"+ resp[i]["sn"]+ "' class='add_to_cart'>Add</a> | More"
+"</div>"
);
}
var resp2 = resp;
}
});
$('body').append(resp2[0]["price"]);
FireBug说:
ReferenceError: resp2 is not defined
$('body').append(resp2[0]["price"]);
如何在其他地方使用$.ajax
成功数据? (在$ .ajax函数之外)
这个概念类似于“全局变量”。
答案 0 :(得分:0)
如果您只想使用success
回调之外的响应内容,则应在方法之外声明您的变量:
var resp2;
$.ajax({
url:"list.php",
dataType: "json",
success: function(resp){
for(var i=0;i<resp.length;i++){
$('#goods_list').append(
"<h3>" + resp[i]["name"] + "</h3>"
+
"<div>Price: NT$" + resp[i]["price"] + "<br />"
+
resp[i]["description"]
+
"<hr /> <a href=# alt='"+ resp[i]["sn"]+ "' class='add_to_cart'>Add</a> | More"
+"</div>"
);
}
var resp2 = resp;
}
});
无论如何,你必须记住,很可能,几乎可以肯定,$ .ajax调用之后的代码将在成功回调之前执行。它会发生,因为这是一个异步调用。浏览器将执行$ .ajax调用,并等待第二个线程中的响应,在发送请求之后,将执行下一个语句(在您的代码中,.append调用)。
为了完成你想要的,你应该把.append调用放在你的成功回调中。