2017-08-25 111 views
0

我在ajax中点击一个按钮,将产品的id传递给控制器​​,并传递给helper。在帮手中,通过产品的这个ID,我将它添加到购物车中,但这在这个问题上并不重要。我在这个帮助器中创建一个数据数组并返回它,并且控制器将该数组返回给请求。但是当我在数组中发出警报时,我可以看到它让我感到不安,它返回一个空值,我不知道为什么会发生这种情况。Array返回一个空值

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时,它都会返回空值。

+0

假设你得到了'警报( “成功”);'还正确吗? – Pitchinnate

+0

这是正确的...... –

+0

如果你尝试硬编码回声json_encode(数组(“product_name”=>“teste”))警报是否给出了值? –

回答

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); 
      } 
     }); 
    } 
0

打开开发人员工具,并检查服务器调用的响应中有什么。

确认您的服务器代码正在接收您发布的参数并返回正确的数据。

+0

我不明白你的意思,但从我的理解你想知道服务器是否正确响应我的呼叫。所以,与'product_id'有关的参数是正确的,因为产品是由助手添加的(正如我在问题中所说的,这对于数组来说并不重要)。关于数组,它有一个yes返回值,但我不明白为什么它返回null,因为'alert(“success”)'正常执行并且在alert(“dados”)之后执行,但是警报显示为'null'。 –

0

你得到,因为您在客户端作为Ajax响应接收到的数据是不是有效的JSON数据。根据我的理解,当你在服务器端硬编码一个json值时,你会得到客户端的JSON对象作为响应,这非常完美。所以问题与服务器端JSON响应数据无效