使用AJAX调用PHP函数,但重定向不会';行不通

使用AJAX调用PHP函数,但重定向不会';行不通,php,jquery,ajax,Php,Jquery,Ajax,我遇到了一个让我头晕目眩的问题。我会解释情况。。。我正在使用opencart进行一个项目,我创建了一个类似这样的按钮:当你点击它时,它会向网站所有者发送所有东西都在购物车中,这些产品会将客户数据放在一起,并且只有在用户登录后才能发送电子邮件,然后问题才会出现 这是客户将单击的按钮: <div class="checkout-button"><a id="button-quotation" class="button">click me</a></div&

我遇到了一个让我头晕目眩的问题。我会解释情况。。。我正在使用opencart进行一个项目,我创建了一个类似这样的按钮:当你点击它时,它会向网站所有者发送所有东西都在购物车中,这些产品会将客户数据放在一起,并且只有在用户登录后才能发送电子邮件,然后问题才会出现

这是客户将单击的按钮:

<div class="checkout-button"><a id="button-quotation" class="button">click me</a></div> 
这里有一个重定向功能,如果没有登录,它会将客户端发送到登录页面:

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')); 
    }
}

我可以使电子邮件工作,但我不能运行重定向,如果客户端没有登录到该网站。有人能帮我吗?

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

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


另请参见此问题:

您可以将url发送到ajax并通过javascript重定向


window.location.href=response.your\u login\u url

难道你不能在你的点击函数中添加引号()吗?你可以用两种方法实现这一点。方法1)简单的方法-你可以在客户端执行重定向(只需发送一个响应“loginRequired”并在ajax响应中检查这个字符串,然后重定向到登录页面)方法2)你应该以302的形式发送带有重定向头的响应
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')); 
    }
}