Php Codeigniter和AJAX错误

Php Codeigniter和AJAX错误,php,jquery,ajax,codeigniter,Php,Jquery,Ajax,Codeigniter,我正在申请一家酒吧 应用程序通过执行get_beers_from_customer,用beer表单按钮填充beer_输出;当文件准备好时。 然后,调酒师通过点击啤酒表单按钮提供饮料 每次调酒师点击啤酒表单按钮时,都会发出一个ajax调用,并发送到codeigniter控制器,在那里删除啤酒,并用剩下的啤酒响应ajax,直到没有剩下的订单为止 一旦没有剩下啤酒,订单将通过我的控制器的另一个功能进行处理:处理\u订单\u当\u所有饮料\u供应$user\u id 我使用authorize.net作为

我正在申请一家酒吧

应用程序通过执行get_beers_from_customer,用beer表单按钮填充beer_输出;当文件准备好时。 然后,调酒师通过点击啤酒表单按钮提供饮料

每次调酒师点击啤酒表单按钮时,都会发出一个ajax调用,并发送到codeigniter控制器,在那里删除啤酒,并用剩下的啤酒响应ajax,直到没有剩下的订单为止

一旦没有剩下啤酒,订单将通过我的控制器的另一个功能进行处理:处理\u订单\u当\u所有饮料\u供应$user\u id

我使用authorize.net作为支付网关

问题是当我只点了一杯啤酒,但如果我点了两杯啤酒,一切都很好。处理\u订单\u当\u所有\u饮料\u服务$user\u id输出试图获取非对象属性的错误时

如果$response->response\u code==1,那么这里就是发生错误的地方。显然,它没有返回响应。ajax正在发布,并且没有返回任何错误。我不知道发生了什么事。如果有帮助的话,我可以给你链接并点一杯饮料

以下是ajax函数

$(document).ready(function(){

    get_beers_from_customer();

    function get_beers_from_customer()
    {
        //form variables
        var user_id = "<?php echo $this->session->userdata('user_id'); ?>" ;
        var formData = {user_id:user_id};
        ajax_update_content_when_page_is_loaded_beers(formData);
    }

    function ajax_update_content_when_page_is_loaded_beers(formData)
    {   
        $.ajax({
            url     : '<?php echo base_url()."index.php/bartender/bartender_serve_beers"; ?>',
            async   : false,
            type    : "POST",
            cache   : false,
            data    : formData,
            dataType: "html",                                                             
            success : function(data)
            {
                alert($.trim(data));
                $('#beer_output').html($.trim(data));
                $('#beer_output').trigger('create');                                                      },
                error: function (jqXHR, textStatus, errorThrown)
                {
                    $('#server_message_error_jqXHR').html("here is the jqXHR"+jqXHR);
                    $('#server_message_error_textStatus').html("here is the textStatus "+textStatus);
                    $('#server_message_error_errorThrown').html("here is the errorThrown"+errorThrown);
                }                                                   
            });     

    }

});

once the form is submitted
$(".beer").on("submit",function(event)
{
    //variables
    var delete_beer = $(this).find(".delete_beer").val();
    var beer_id     = $(this).find(".beer_id").val();
    var user_id     ="<?php echo $this->session->userdata('user_id');?>";

    // alert( "delete_beer="+delete_beer+"beer_name=" +beer_name +"beer_id="+beer_id );

    //form variables
    var formData = {delete_beer:delete_beer,beer_id:beer_id,user_id:user_id}; //Array 
    submit_ajax_form_beers(formData);
    //get_beers_from_customer();
}); 

function submit_ajax_form_beers(formData)
{
    $.ajax({


        url     : '<?php echo base_url()."index.php?/bartender/bartender_serve_beers"; ?>',
        async   : false,
        type    : "POST",
        cache   : false,
        data    : formData,
        dataType: "html",                                                             
        success : function(data){

            $('#beer_output').trigger('create');  
            console.log($(this).data(formData));                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

        },
        error: function (jqXHR, textStatus, errorThrown){

            $('#server_message_error_jqXHR').html("here is the jqXHR"+jqXHR);
            $('#server_message_error_textStatus').html("here is the textStatus "+textStatus);
            $('#server_message_error_errorThrown').html("here is the errorThrown"+errorThrown);
        } 

    });     
} 
编码点火控制器


我认为没有必要将会话变量输出到前端。 您将在下一个控制器也有它。最好是签入下一个控制器(如果它仍然存在)。 在其他文件中添加一个签入,如:

//...
else if ($this->session->userdata('user_id') != false && !empty($this->session->userdata('user_id')) ) {
  $user_id = $this->session->userdata('user_id'); 
  //continues outputting beers                                                                                                                     
  echo $beers_served_button = $this->bartender_model->output_beers_served_button($user_id);
}//...rest of the code

此外,您还可以检查$_POST['delete_beer'],然后将$_POST['beer\u id']分配给$beer\u id变量。虽然我看不到您通过AJAX传递了任何beer变量。据我所见,您只传递会话输出。

我认为ajax中的url属性没有指向代码片段中的控制器操作!您的应用程序是否只有一个用户?如果是,请尝试创建另一个,并确保其id为2,然后再次测试2的顺序。我检查了$user\u id变量,它不是空的。稍后我将在这里放置一个链接。这样可能会更简单。这是链接用户名:a9772108密码:A727221,然后单击“拾取”。然后点击查看饮料。
//...
else if ($this->session->userdata('user_id') != false && !empty($this->session->userdata('user_id')) ) {
  $user_id = $this->session->userdata('user_id'); 
  //continues outputting beers                                                                                                                     
  echo $beers_served_button = $this->bartender_model->output_beers_served_button($user_id);
}//...rest of the code