我是一名学习者,我面临一个问题。首先我做了一个变量。然后使用 ajax 函数我得到了 json 数据。然后我解析它并尝试将 json 数据传递给名为 var Invoice_details 的变量。然后,通过单击事件,我尝试查看该变量,但它仅显示0。但我的 ajax 函数下的 console.log(parsed);
命令显示控制台日志上的 json 数据。但我的操作函数上的 console.log(invoice_details);
显示 0。我这是怎么了?
//function order started
var invoice_details;
function order(val1){
var order_no=getQueryVariable("order_number");
//AJAX START
$.ajax({
url: "/anamika/function/order.php",
type: "POST",
data: {item_code: item_added, paymentdetails: val1, order_no: order_no },
success:function(data, textStatus, jqXHR)
{
//console.log(data);
var parsed = JSON.parse(data);
var invoice_details = parsed;
console.log(parsed);
},//Success finished
error:function(jqXHR, textStatus, errorThrown)
{
} //Error finished
}) //AJAX FINISHED
}
//function order finished
order('91');
$("#invoice_pay").live("click", function (event) {
console.log(invoice_details);
})
最佳答案
当您在 success
回调中声明 var Invoice_details = parsed;
时,您实际上是在创建一个新的局部变量,该变量仅存在于 success 的范围内
回调,因此这个新的局部变量正在获取您的数据,而不是您随后执行 console.log 的全局数据。
您已经在外部定义了该变量,因此只需删除 var
声明并执行以下操作:
invoice_details = parsed;
关于Javascript从ajax函数传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28774514/