2017-08-25 14 views
0

製品のIDをコントローラに渡してボタンをクリックすると、ajaxでリクエストが行われ、ヘルパーに渡されます。助けを借りて、私はそれをカートに追加しますが、それは問題ではありません。私はこのヘルパーでデータの配列を作成し、それを返し、コントローラはその配列をリクエストに返します。しかし、私が配列に警告を出すと、私はそれが私を混乱させるのを見ることができます。それは私にヌル値を返し、なぜそれが起こるのか分かりません。アレイはnull値を返します

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

あなたは '警告( "成功")を取得していると仮定;'も正しいですか? – Pitchinnate

+0

そうです... –

+0

エコーjson_encode(array( "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

開発者ツールを開いて、サーバーコールの応答に何が含まれているかを確認します。

サーバーコードが、投稿して適切なデータを返すパラメータを受信して​​いることを確認します。あなたは、AJAXの応答としてクライアント側で受信されたデータは、ない有効なJSONデータあるので

+0

私の理解からは、サーバーが私の呼び出しに正しく応答しているかどうかを知りたいと思います。したがって、プロダクトがヘルパーによって追加されるので、 'product_id'に関連するパラメータは正しいです(これは配列に関してはそれほど重要ではないという質問で言いました)。配列に関して、それはyesの戻り値を持っていますが、 'alert(" success ")'が正常に実行され、 'alert(" dados ")'の後でnullが返される理由はわかりません。アラートが「null」と表示されます。 –

0

あなたはヌルを得ています。私があなたのコメントから理解したことによると、サーバ側でJSON値をハードコードした場合、クライアント側でJSONオブジェクトをレスポンスとして取得しています。これは完璧です。したがって、の問題は、サーバー側のJSON応答データが有効でないためです()。

関連する問題