не может POST, используя AJAX в Codeigniter - PullRequest
0 голосов
/ 03 мая 2018

Надеюсь, я здесь что-то упустил. Я искал немного и не могу найти решение.

В CI я пытаюсь POST через 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);
        }
    });
}

Внутри моего контроллера меню функция добавления выглядит следующим образом:

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, он будет активирован. Кто-нибудь видел, что я сделал не так?

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Вы пропустили, после 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);
        }
    });
}
0 голосов
/ 03 мая 2018

Вы используете 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;
}

View

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');
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...