2015-06-28 92 views
1

晕,我使用ajax将表单发布到控制器codeigniter中。我想在ajax发布后重定向,但控制器不重定向。重定向无法在codeigniter中正常工作

这是我的ajax

$.ajax({ 
     type:"POST", 
     url:form.attr("action"), 
     data:form.serialize(), 

     success: function(){ 

     }, 
     error: function(){ 
     alert("failure"); 
     } 
    }); 
    }); 
}); 

这是我的控制器

public function checkout_data(){ 
    $this->account_model->checkout_simpan(); 
    redirect('produk/payment/last_steps'); 
} 

这是我的形式

<form class="form-horizontal col-md-offset-3" id="form-checkout" action="<?php echo base_url('produk/payment/checkout_data');?>"> 

有什么错我的代码?

+0

则需要使用JavaScript在阿贾克斯成功函数重定向不从PHP –

回答

0

你在做错了

你现在在做什么: 当你发送ajax请求到你的服务器时,方法checkout_data被执行,并且在那里有一个重定向到另一个url。但它可以在服务器上运行。因此,在重定向到produk/payment/last_steps后,将执行方法last_steps(或绑定到此url的任何内容),并将其内容返回给ajax-request。

需要做什么:

使用javascript函数重定向。通常这是一个document.location E.g. document.location = "some/new/url"。 所以我想你的checkout_data方法应该返回一些字符串。包含重定向的网址。例如:

public function checkout_data(){ 
    $this->account_model->checkout_simpan(); 
    echo 'produk/payment/last_steps'; 
} 

而且在ajax成功,你可以使用:

success: function(data) { 
    // console.log(data) // uncomment to check what is received 
    document.location = data; 
}, 
相关问题