数组 returns 一个空值
Array returns a null value
我在 ajax 中单击按钮将产品 ID 传递给控制器并传递给助手时发出请求。在助手中,通过产品的这个 ID,我将其添加到购物车,但这在那个问题上并不重要。我在这个助手中创建了一个数据数组 return 它,控制器 return 将该数组发送给请求。但是当我在数组中发出警报以便我可以看到它让我不安时,它 return 给我一个空值,我不知道为什么会这样。
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
,它returns me null.
打开开发者工具,查看服务端调用的响应内容。
验证您的服务器代码正在接收您发布的参数并返回正确的数据。
您得到 null 因为您在客户端作为 ajax 响应收到的数据 不是有效的 JSON数据。根据我从您的评论中了解到的情况,当您在服务器端对 json 值进行硬编码时,您将在客户端获得 JSON 对象作为响应,这很完美。所以 问题是服务器端 JSON 响应数据无效 。
我找到的解决问题的方法是在 ajax 请求成功时更改 return 变量并指定数组位置。通过在数组中给出 alert
来做到这一点,它 return 是我的价值。
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);
}
});
}
我在 ajax 中单击按钮将产品 ID 传递给控制器并传递给助手时发出请求。在助手中,通过产品的这个 ID,我将其添加到购物车,但这在那个问题上并不重要。我在这个助手中创建了一个数据数组 return 它,控制器 return 将该数组发送给请求。但是当我在数组中发出警报以便我可以看到它让我不安时,它 return 给我一个空值,我不知道为什么会这样。
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
,它returns me null.
打开开发者工具,查看服务端调用的响应内容。
验证您的服务器代码正在接收您发布的参数并返回正确的数据。
您得到 null 因为您在客户端作为 ajax 响应收到的数据 不是有效的 JSON数据。根据我从您的评论中了解到的情况,当您在服务器端对 json 值进行硬编码时,您将在客户端获得 JSON 对象作为响应,这很完美。所以 问题是服务器端 JSON 响应数据无效 。
我找到的解决问题的方法是在 ajax 请求成功时更改 return 变量并指定数组位置。通过在数组中给出 alert
来做到这一点,它 return 是我的价值。
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);
}
});
}