从Ajax发送到Codeigniter控制器的数据

时间:2019-07-07 13:31:02

标签: php ajax codeigniter

我正在尝试通过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 \ application \ controllers \ Panier.php:66:null

所以我的数据没有通过!

您能帮我吗?

编辑 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 个答案:

答案 0 :(得分:1)

以下代码应将您的数据发送到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。当您使用JavaScript中的POST方法加载页面时,响应会使用ajax发送到同一页面,因此您可以使用代码而无需刷新页面。

此外:您无法return数据到javascript。您必须将其打印到客户端,以便您的javascript的JSON解析器可以读取它。因此,代替return $res;

echo json_encode($res);