成功ajax调用的响应是像这样的json形式:
{"prize_name":"Keys 4","prize_image":"http:\/\/localhost\/web-game-w\/wp-content\/uploads\/2017\/09\/4rare.jpg"}
我如何存储" prize_name" &安培; " prize_image"在变量供以后使用?
这是ajax代码:
$("#ajax").click(function(e){
e.preventDefault();
var data = {
'action': 'getprize_data',
dataType: "json",
async: false
};
$.post(ajaxurl, data, function(response) {
console.log(response);
// Store vars
});
});
我也有问题。此response.prize_name
将返回错误response.prize_name is undefined
。
答案 0 :(得分:1)
在ajax调用开始之前声明这些变量而不使用var,并在成功函数中为这些变量赋值
prize_name = prize_image = "";
$("#ajax").click(function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: ajaxurl, // give url over here
data: {action: 'getprize_data'},
dataType: 'json',
async: false // always avoid false if you can
success: function(response) {
console.log(response);
response = JSON.parse(reponse);
// Store vars
// assign the values over here
// maybe you will need to decode the json
// if you are encoding it so use JSON.parse
// for decoding the json
},
});
});
现在我之所以说不使用var而声明变量是因为
如果你不使用var,那么变量就会在层中冒泡 范围,直到它遇到给定名称或全局变量 对象(窗口,如果你在浏览器中这样做),然后它 重视。
答案 1 :(得分:1)
您的post电话错误。我建议避免异步到假。但是,如果你需要不惜一切代价这样的行为,你可以将你的帖子重写为:
$.ajax({
type: "POST",
url: ajaxurl,
data: {action: 'getprize_data'},
success: function(response) {
......
},
dataType: 'json',
async: false
});
相反,要创建全局变量,您可以利用data attributes。
您可以这种方式存储值:
$('#ajax').data('prizeName', response.prize_name);
而且,将来,当您需要这样的值时,您可以通过以下方式获取值:
$('#ajax').data('prizeName');
请记住,ajax是异步的,因此只有在执行succes回调时,该值才可用。因此,我建议在你的ajax成功函数中使用回调函数。