Php Codeigniter和AJAX错误
我正在申请一家酒吧 应用程序通过执行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函数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作为
$(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