Данные, отправленные с Ajax на контроллер codeigniter - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь отправить имя пользователя из представления на контроллер через Ajax, например:

 $('#exampleFormControlSelect1').change(function(){
     var  username =$('#exampleFormControlSelect1').val();

        $.ajax({
            type: 'POST',
            dataType: "json",
            url: "Panier/loadPanier",
            data: {username: username},
            success: function(result){
                $("#tbodyid").empty();
                var data1 = JSON.parse(result);
                console.log(data1) ;
            },

        });

    });

и я пытаюсь использовать переданное значение для выполнения некоторой работы:

    public function loadPanier()
{

    $res = [];
    $username = $this->input->post('username');

    $panier_data = $this->model_panier->getPanierData($username);

    foreach ($panier_data as $k => $v) {
        $idPiece = $v['idPiece'];
        $qte = $v['quantity'];
        $piece_data = (array)$this->model_catalogue->getDetail($idPiece);

        $price = (int)$piece_data['Unit Price'];
        $montant = $qte * $price;

        array_push($res, array(
            'idPiece' => $idPiece,
            'Description' => $piece_data['Description'],
            'qte' => $qte,
            'prix HT' => round($piece_data['Unit Price'], 3),
            'montant' => $montant
        ));
    }

    return $res;
}

В моем URL я получаю эту ошибку:

В foreach указан неверный аргумент ()

но вот что я заметил, выполнив var_dump ($ username):

C: \ wamp64 \ WWW \ PortalDealer \ приложения \ Контроллеры \ Panier.php: 66: нуль

Так что мои данные не передаются!

Можете ли вы помочь мне с этим?

EDIT enter image description here

продемонстрировать результат этой части кода:

    var_dump($_REQUEST);
    $res = [];
    $username = $this->input->post('username');
        var_dump($username);
    $panier_data = $this->model_panier->getPanierData($username);
    var_dump($panier_data);

1 Ответ

1 голос
/ 07 июля 2019

Приведенный ниже код должен отправить ваши данные на Panier/loadPanier/.

$('#exampleFormControlSelect1').change(function(){
    var  val1 =$('#exampleFormControlSelect1').val();
    $.ajax({
        method: "POST",
        url: "Panier/loadPanier/",
        data: { username: val1}
    }).done(function( result ) {
        $("#tbodyid").empty();
        var data1 = JSON.parse(result);
        console.log(data1) ;
    });
});

Вы видели null каждый раз, когда делали var_dump(), потому что пытались загрузить страницу независимо. Страница выдаст вам значение POST, только если вы переходите на страницу через форму, в данном случае это javascript. Когда вы загружаете страницу с помощью метода POST в javascript, ответ отправляется на ту же страницу с ajax, так что вы можете работать с вашим кодом, не обновляя страницу.

Также: вы не можете return данные в javascript. Вы должны распечатать его на стороне клиента, чтобы анализатор JSON вашего javascript мог его прочитать. Поэтому вместо return $res;:

echo json_encode($res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...