Ajax Post第一次不起作用,但第二次起作用



我已经问过一次了,但现在我无法用同样的方式解决它。我有一个智能向导页面,当我点击finish时,我想通过ajax调用php函数,并从服务器获得响应。

因此,当我第一次点击它时,响应是我页面的完整html代码,它不执行我的功能,而是重定向到另一个页面。但当我再次回到这个页面并再次单击它时,它会给出我想要的响应,并执行函数。

有人知道为什么会发生这种事吗?

Ajax函数:

if(confirm('Adicionar ao Carrinho?')){
$.ajax({
async:false,
url:'booking/add_to_cart',
success:function(response){
alert(response);
}, 
error: function() {
console.log($.makeArray(arguments));
},
complete: function() {
console.log($.makeArray(arguments));
}
});
}else{
return false;
}

我的php控制器功能:

public function add_to_Cart(){
if(!isset($_SESSION['user_data'])){
echo "Tem de fazer login para adicionar ao carrinho";
exit();
}
$detalhes_viagem=serialize($_SESSION['detalhes_viagem']);
$idcliente=$_SESSION['user_data']['idcliente'];
if(isset($_SESSION['hotel'])){
$preco_hotel=$_SESSION['hotel']['preco_total'];     
$hotel=serialize($_SESSION['hotel']);
unset($_SESSION['hotel']);
}else{
$preco_hotel=0;
$hotel="FALSE";
}
$voo="FALSE";
if(isset($_SESSION['rent'])){
$preco_rent=$_SESSION['rent']['preco_total'];       
$rent=serialize($_SESSION['rent']);
unset($_SESSION['rent']);
}else{
$preco_rent=0;
$rent="FALSE";
}
if(isset($_SESSION['trans'])){
$preco_trans=$_SESSION['trans']['preco_total'];     
$trans=serialize($_SESSION['trans']);
unset($_SESSION['trans']);
}else{
$preco_trans=0;
$trans="FALSE";
}
if(isset($_SESSION['extras'])){
$preco_extras=$_SESSION['extras']['preco_total'];       
$extras=serialize($_SESSION['extras']);
unset($_SESSION['extras']);
}else{
$preco_extras=0;
$extras="FALSE";
}
$preco_total=$preco_hotel+$preco_rent+$preco_trans+$preco_extras;
$this->model->add_to_cart($hotel,$voo,$rent,$trans,$extras,$preco_total,$idcliente,$detalhes_viagem);
echo "something";
exit();
}

我的模型函数只是在数据库中插入这些值

实际情况是,当我在设置了所需的会话后第一次进入页面时,尽管ajax执行了成功功能,但这并不起作用。当我再次进入页面时,它已经100%工作了。

使用jquery 尝试此操作

$(document).ready(function(){

if(confirm('Adicionar ao Carrinho?')){
$.ajax({
async:false,
url:'booking/add_to_cart',
success:function(response){
alert(response);
}, 
error: function() {
console.log($.makeArray(arguments));
},
complete: function() {
console.log($.makeArray(arguments));
}
});
}else{
return false;
}
});

最新更新