我试图在成功调用Realex(处理信用卡交易的公司)之后清除一些会话变量。会话变量包含我的购物车内容,因此一旦交易成功,我想清除它。我的代码如下:
jQuery.ajax({
async: false,
url: templateuri+'/realex_go_pay.php',
type: 'post',
data: {
amount: ordertotal,
orderid: orderid,
orderkey: orderkey,
cardtype: type,
cardnumber: number,
cardname: name,
expdate: expiry,
cvv: cvv,
issueno: issueno
},
success: function(data){
// Hide payment indicator.
jQuery('.realex_payindicator').hide();
data = data.split("|");
if (data[0] == '00'){
// Empty the shopping cart.
jQuery.ajax({
async: false,
url: templateuri+'/realex_empty_cart.php'
});
self.location = thankyoupage+'?order='+orderid+'&key='+orderkey;
}else{
alert(data);
}
}
});
第一次调用realex_go_pay.php没问题。但第二次调用realex_empty_cart.php似乎并没有起作用。在realex_empty_cart.php中,我只有两行代码:
unset($_SESSION['cart']);
unset($_SESSION['coupons']);
答案 0 :(得分:0)
我认为Archer在评论中有一个很好的解决方案,但原因可能与缓存有关。默认情况下,jQuery.ajax将允许浏览器缓存GET请求的响应。这意味着它不会与服务器通信。添加
cache: false
到代码中的选项以强制它转到服务器。
success: function(data){
// Hide payment indicator.
jQuery('.realex_payindicator').hide();
data = data.split("|");
if (data[0] == '00'){
// Empty the shopping cart.
jQuery.ajax({
async: false,
cache: false,
url: templateuri+'/realex_empty_cart.php'
});
self.location = thankyoupage+'?order='+orderid+'&key='+orderkey;
}else{
alert(data);
}
}
(有关详细信息,请参阅http://api.jquery.com/jQuery.ajax/)
欧文