希望我在这里可能忽略了一些东西。我一直在寻找,找不到解决方案。
在CI中,我尝试在onClick事件中通过AJAX进行POST。触发时,事件应将项目添加到购物车。
我的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);
}
});
}
在我的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);
}
}
我这样称呼函数:
<h1 onclick="addToCart(23)">OTown Cafe Menu- Click an item to add it to your order!</h1>
无法从ajax触发成功或错误,但是如果我在触发ajax之前或之后发出警报。有人看到我做错了吗?
答案 0 :(得分:0)
您正在使用dataType:“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');
}
});
}
答案 1 :(得分:0)
你错过了,在网址之后:
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);
}
});
}