使用AJAX调用PHP函数,但重定向不起作用

时间:2014-11-20 18:40:53

标签: php jquery ajax

我有一个问题正在转变我的头脑。我将解释这种情况......我正在开发一个带有opencart的项目,我创建了一个按钮,其工作方式如下:当您点击它时,它应该向网站所有者发送所有内容都在购物车内,并且这些产品将客户数据放在一起,只有在用户登录后才能发送电子邮件,然后问题才会开始。

这是客户点击的按钮:

<div class="checkout-button"><a id="button-quotation" class="button">click me</a></div> 

然后通过AJAX将调用PHP函数来检查:

$(document).ready(function(){
$('#button-quotation').click(function(){
    var clickBtnValue = $(this).val();
    var ajaxurl = 'index.php?route=checkout/cart/quotation',
    data =  {'action': clickBtnValue};
    $.post(ajaxurl, data, function (response) {
        alert("works!!");
    });
});});

这里有一个重定向功能,可以将客户端发送到登录页面,如果没有记录的话:

public function quotation(){
    if (!$this->customer->isLogged()) {
        $this->session->data['redirect'] = $this->url->link('checkout/cart', '', 'SSL');

        $this->redirect($this->url->link('account/login', '', 'SSL')); 
    }
}

我可以使电子邮件正常工作,但如果客户端未登录该站点,则无法运行重定向。有人可以帮我吗?

2 个答案:

答案 0 :(得分:2)

如果在PHP函数中重定向,则只会重定向AJAX请求。

您应该做什么:让该函数返回指示JavaScript应该向您的登录页面发出重定向的数据。

另请参阅此问题:How to manage a redirect request after a jQuery Ajax call

答案 1 :(得分:1)

您可以将网址发送到ajax并通过javascript重定向。

window.location.href = response.your_login_url ;