我正在尝试通过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
所以我的数据没有通过!
您能帮我吗?
展示这部分代码的结果:
var_dump($_REQUEST);
$res = [];
$username = $this->input->post('username');
var_dump($username);
$panier_data = $this->model_panier->getPanierData($username);
var_dump($panier_data);
答案 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);