Ajax调用没有按预期工作

时间:2012-03-08 20:39:44

标签: jquery ajax

我试图在成功调用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']);

1 个答案:

答案 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/

欧文