首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >代码点火器与AJAX错误

代码点火器与AJAX错误
EN

Stack Overflow用户
提问于 2015-02-11 18:52:53
回答 1查看 808关注 0票数 0

我在申请酒吧。

当文档准备就绪时,应用程序通过执行#beer_output来使用"beer按钮“填充get_beers_from_customer();。然后酒保通过点击“啤酒表单”按钮来提供饮料。

每次调酒师单击“beers按钮”时,都会发出一个ajax调用,并将其发送到代码点火器控制器,在该控制器中删除啤酒,并响应ajax,将啤酒留给服务,直到没有剩余的订单可供使用。

一旦没有剩下的啤酒,订单就会通过我的控制器的另一个函数:process_order_when_all_drinks_served($user_id)处理。

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

问题是我只点了一瓶啤酒,但如果我点了两瓶啤酒,一切都很好。process_order_when_all_drinks_served($user_id)输出试图获取非对象属性的错误。

这里是错误正在发生的具体位置,if($response->response_code=="1")显然没有给出一个响应。ajax正在发布,它不会返回任何错误。我不知道发生了什么。如果有帮助的话,我可以给你点一杯饮料。

以下是ajax函数

代码语言:javascript
运行
复制
$(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);
        } 

    });     
} 

码点火器控制器

代码语言:javascript
运行
复制
public function process_order_when_all_drinks_served($user_id)
{
    $bartender_id = $this->session->userdata('bartender_id');   

    //load model
    $this->load->model('authorizenet_model');

    //finalize order with authorizenet prior authorize and capture
    $response = $this->authorizenet_model->priorauthcapture($user_id);

    print_r($response);

    if($response->response_code=="1")
    {
        //stores the order_line before it is deleted
        $this->bartender_model->store_past_order_line($user_id);

        //deletes customer from order line if all beers and mixed drinks have been served 
        $this->bartender_model->delete_customer_from_order_line($user_id);                                                                                 

        //order was successful
        $response_message= '<center><strong>'.$response->response_reason_text.'</strong></center>';
    }
    else
    {
        //store userdata in unprocess orders
        $this->bartender_model->store_unprocessed_order($user_id,$bartender_id);

        //then erases it from order_line
        $this->bartender_model->delete_customer_from_order_line($user_id);

        $response_message= '<center><strong style="color:red;">'."There was a problem with the order.<br/>"
        .$response->response_reason_text.$response->error_message.'</strong></center>';
    }

    return $response_message;
} 


public function bartender_serve_beers(){
    //checks if there are any drinks left to process order 


    if(isset($_POST['delete_beer']) && isset($_POST['user_id'])
    {
        $user_id = $_POST['user_id'];
        $beer_id = $_POST['beer_id'];

        //then it is deleted from the paid beers
        $this->bartender_model->delete_beers($user_id,$beer_id);

        //checks if there are any drinks left to be processed
        $checks_any_drinks_left= $this->bartender_model->checks_if_mixed_drinks_beers_left_to_process_order($user_id);

        if($checks_any_drinks_left=="1")
        {
            $user_id = $this->session->userdata('user_id');

            $proccess_drinks_message= $this->process_order_when_all_drinks_served($user_id);

            //outputs the response message to bartender
            echo $proccess_drinks_message;                                                                         
        }
        else
        {
            $user_id = $this->session->userdata('user_id'); 

            //continues outputting beers                                                                                                                     
            echo $beers_served_button = $this->bartender_model->output_beers_served_button($user_id);
        }

    }
    else
    {                                                           
        $user_id = $this->session->userdata('user_id');

        echo $beers_served_button = $this->bartender_model->output_beers_served_button($user_id);       
    }

}       
EN

回答 1

Stack Overflow用户

发布于 2015-02-11 20:05:38

我不认为有会话变量输出到前端是不明智的。你也会把它放在下一个控制器里。最好是签入下一个控制器,如果它仍然存在。在其他内部添加一个签入,例如:

代码语言:javascript
运行
复制
//...
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_id']分配给$beer_id变量。虽然我看不出您通过AJAX传递了任何啤酒变量。据我所见,您只传递会话输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28462186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档