Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将ajax json响应保存到全局变量以供重用_Javascript_Php - Fatal编程技术网

Javascript 如何将ajax json响应保存到全局变量以供重用

Javascript 如何将ajax json响应保存到全局变量以供重用,javascript,php,Javascript,Php,如何将JSON响应保存到JavaScript/jQuery中的全局变量,以便以后使用。我尝试了几种方法,包括保存调用返回的响应文本(data.responseText),但最后仍然是空的/未定义的。 我知道强烈反对将响应保存在DOM元素中。我不希望每次需要特定数据时都进行相同的调用。除了ajax成功回调函数之外,是否没有简单的方法访问它 我尝试的是: $('#pay-now').click(function(e){ e.preventDefault(); data = ''; var myR

如何将JSON响应保存到JavaScript/jQuery中的全局变量,以便以后使用。我尝试了几种方法,包括保存调用返回的响应文本(data.responseText),但最后仍然是空的/未定义的。 我知道强烈反对将响应保存在DOM元素中。我不希望每次需要特定数据时都进行相同的调用。除了ajax成功回调函数之外,是否没有简单的方法访问它

我尝试的是:

$('#pay-now').click(function(e){ 
e.preventDefault(); 
data = '';
var myResponse;
var orderObj = {
addr_id: addr_id,
cust_email:  cust_email,
total_amt_to_pay: total_amt_to_pay,
items_bought: items_bought,
shipping: shipping,
coupon_code: coupon,
trx_id: trx_id

};
// Send the data to save using post
var posting = $.post( '../inc/payment/pay_with_card.php', orderObj );

posting.done(function( data ) {
/* check result from the attempt */
data = data;
console.log(data);
payWithPaystack(data);
});
posting.fail(function( data ) { /* and if it failed... */ });
//}
});

function payWithPaystack(data){

var handler = PaystackPop.setup({

key: '<?php //echo PAYSTACK_PUBLIC_KEY; ?>',



email: data.email,
amount: data.price,
metadata: {
cartid: data.sessionId,
orderid: data.sessionId,
custom_fields: [
{
display_name: "Paid on",
variable_name: "paid_on",
value: 'Website'
},
{
display_name: "Paid via",
variable_name: "paid_via",
value: 'Inline Popup'
}
]
},
callback: function(response){
// post to server to verify transaction before giving value
var verifying = $.get( '/verify.php?reference=' + response.reference);
verifying.done(function( data ) { /* give value saved in data */ });
},
onClose: function(){
alert('Click "Pay now" to retry payment.');
}
});
handler.openIframe();
}
$(“#立即付款”)。单击(功能(e){
e、 预防默认值();
数据='';
var-myResponse;
var orderObj={
地址id:地址id,
客户电子邮件:客户电子邮件,
支付总额:支付总额,
购买的物品:购买的物品,
航运:航运,
优惠券代码:优惠券,
trx_id:trx_id
};
//使用post发送要保存的数据
var posting=$.post('../inc/payment/pay_with_card.php',orderObj);
过帐.完成(功能(数据){
/*检查尝试的结果*/
数据=数据;
控制台日志(数据);
payWithPaystack(数据);
});
失败(函数(数据){/*如果失败…*/});
//}
});
函数payWithPaystack(数据){
var handler=PaystackPop.setup({
键:“”,
电子邮件:data.email,
金额:data.price,
元数据:{
cartid:data.sessionId,
orderid:data.sessionId,
自定义字段:[
{
显示_名称:“已付款”,
变量名称:“已付款”,
价值:“网站”
},
{
显示_名称:“通过支付”,
变量名称:“通过支付”,
值:“内联弹出窗口”
}
]
},
回调:函数(响应){
//发送到服务器以在提供值之前验证事务
var verifying=$.get('/verify.php?reference='+response.reference);
验证.done(函数(数据){/*给出保存在数据中的值*/});
},
onClose:function(){
警报('单击“立即付款”重试付款');
}
});
handler.openIframe();
}

只需在任何函数之外声明它:

var dataStore;

$('#pay-now').click(function(e) {
  e.preventDefault();

  //...

  posting.done(function(data) {
    dataStore = data;
    //...
  }

  //...

});

只需在任何函数外部声明一个全局
var globalData
,并将其存储在那里。将保留,直到用户刷新de页或导航出。这:
data=data
不起作用,因为它应该是一个不同的名称,并且应该在函数外部声明。@ariel,你能演示一下上面代码的用法吗?谢谢