无法在 Codeigniter 中使用 AJAX 开机自检



希望我可能忽略了这里的东西。我一直在寻找一点,但找不到解决方案。

在CI中,我正在尝试通过AJAX在onClick事件中发布。 触发时,事件应将商品添加到购物车。

我的Javascript如下:

function addToCart(id) {
var productID = id;
var qty = 1;

$.ajax({
url : "/menu/add/"
type : "POST",
dataType : "json",
data : {"productid" : productID, "qty" : qty},
success : function(data) {
alert(data);
},
error : function(data) {
alert(data);
}
});
}

在我的菜单控制器中,add 函数如下所示:

public function add(){
if (isset($_POST['productid']) && 
isset($_POST['qty'])       &&
is_numeric($_POST['qty'])  &&
$this->product_model->isValidProductId($_POST['productid']) 
){
$productData = array(
'product_id'   => $_POST['productid'],
'product_qty'  => $_POST['qty']
);
$cart_array = $this->session->userdata('cart');
array_push($cart_array, $productData);
$this->session->set_userdata('cart', $cart_array);
}
}

我像这样调用函数:

<h1 onclick="addToCart(23)">OTown Cafe Menu- Click an item to add it to your order!</h1>

成功或错误都不会从 ajax 触发,但是如果我在 ajax 之前或之后发出警报,它就会触发。有人看到我做错了什么吗?

你错过了 ,在 url 之后:

url : "/menu/add/",

尝试以下响应:

public function add(){
if (isset($_POST['productid']) && 
isset($_POST['qty'])       &&
is_numeric($_POST['qty'])  &&
$this->product_model->isValidProductId($_POST['productid']) 
){
$productData = array(
'product_id'   => $_POST['productid'],
'product_qty'  => $_POST['qty']
);
$cart_array = $this->session->userdata('cart');
array_push($cart_array, $productData);
$this->session->set_userdata('cart', $cart_array);
return json_encode(['status'=>'success','msg'=>'Message here','data'=>[]]);
} else {
return json_encode(['status'=>'error','msg'=>'Please send all details','data'=>[]]);
}
}

看看它是否适合你。

Js:

function addToCart(id) {
var productID = id;
var qty = 1;

$.ajax({
url : "/menu/add/"
type : "POST",
dataType : "json",
data : {"productid" : productID, "qty" : qty},
success : function(data) {
if (data.status == 'Success') {
alert('data.status');
} else{
alert('data.status');
}
},
error : function(data) {
alert(data);
}
});
}

你正在使用数据类型:"json",所以你必须返回 json

public function add(){
if (isset($_POST['productid']) && 
isset($_POST['qty'])       &&
is_numeric($_POST['qty'])  &&
$this->product_model->isValidProductId($_POST['productid']) 
){
$productData = array(
'product_id'   => $_POST['productid'],
'product_qty'  => $_POST['qty']
);
$cart_array = $this->session->userdata('cart');
array_push($cart_array, $productData);
$this->session->set_userdata('cart', $cart_array);
}
$arr['success'] = 1;
print json_encode($arr);
exit;
}

视图

function addToCart(id) {
var productID = id;
var qty = 1;

$.ajax({
url : "/menu/add/",
type : "POST",
dataType : "json",
data : {"productid" : productID, "qty" : qty},
success : function(arr) {
if(arr.success==1){
alert('yes');
},
error : function(arr.error==1) {
alert('no');
}
});
}

最新更新