我在ajax中点击按钮将产品的id传递给控制器,然后传递给帮助器。在帮助器中,通过产品的这个id我将它添加到购物车,但这在这个问题上并不重要。我在这个帮助器中创建了一个数据数组并将其返回,然后控制器将该数组返回给请求。但是当我在数组中发出警报以便我可以看到它让我感到不安时,它会返回一个空值,我不知道为什么会这样。
Ajax请求:
function addCartao(product_id){
alert("entrou");
alert(product_id);
$j.ajax({
type: "POST",
url: "<?php echo Mage::getUrl('fol_carousel/ajax/teste') ?>",
data: {
product_id: product_id
},
dataType: 'json',
cache : false,
beforeSend: function () {
alert("beforeSend");
},
success: function (dados) {
alert("success");
alert(dados);
},
complete: function () {
alert("complete");
},
error: function (x,y,z) {
alert("error");
alert(x);
alert(y);
alert(z);
}
});
}
控制器:
$product_id = $this->getRequest()->getPost();
echo json_encode(Mage::helper('fol_carousel/cartao')->addCustom($product_id));
在帮助程序中创建的数组:
$dados['product_name'] = "teste";
$dados['product_price'] = "2.99";
return $dados;
每次执行ajax请求alert
时,它都会返回null。
答案 0 :(得分:0)
打开开发人员工具,检查服务器调用响应中的内容。
验证您的服务器代码是否正在接收您发布的参数并返回正确的数据。
答案 1 :(得分:0)
您获得 null ,因为您在客户端收到的ajax响应数据不是有效的JSON数据。根据我的评论理解,当您在服务器端硬编码json值时,您将在客户端获取JSON对象作为响应,这是完美的。所以问题是服务器端JSON响应数据无效。
答案 2 :(得分:0)
我发现问题的解决方案是通过更改我的ajax请求的返回变量来确定其成功并指定数组位置。通过在数组中提供alert
来执行此操作,它会返回值。
带有修改的Ajax请求代码:
function addCartao(product_id){
alert("entrou");
alert(product_id);
$j.ajax({
type: "POST",
url: "<?php echo Mage::getUrl('fol_carousel/ajax/teste') ?>",
data: {
product_id: product_id
},
dataType: 'json',
cache : false,
beforeSend: function () {
alert("beforeSend");
},
success: function (retorno) {
alert('success');
alert(retorno['product_name']);
},
complete: function () {
alert("complete");
},
error: function (x,y,z) {
alert("error");
alert(x);
alert(y);
alert(z);
}
});
}