【问题标题】:Ajax Post doesnt work the first time but it works the secondAjax Post 第一次不起作用,但第二次起作用
【发布时间】:2014-02-13 05:42:37
【问题描述】:

我已经问过一次了,但现在我无法以同样的方式解决它。我有一个 smartwizard 页面,当我点击完成时,我想通过 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% 工作了。

【问题讨论】:

  • 发布你的代码,或者一个 jsfiddle,或者 $$
  • 你的代码在哪里..?
  • ~不看你的代码就忍不住了!
  • 就像第一次设置会话“detalhes_viagem”时它不起作用但在它之后......
  • 第一次发生了什么...任何错误..?

标签: php jquery ajax


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-04-16
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2021-01-13
    • 1970-01-01
    • 2014-01-31
    相关资源
    最近更新 更多