Array返回null值

时间:2017-08-25 18:26:55

标签: php jquery arrays ajax magento

我在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。

3 个答案:

答案 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);
          }
      });
    }