2017-08-25 3 views
0

Ich mache eine Anfrage in Ajax mit einem Klick auf die Schaltfläche die ID eines Produkts an einen Controller übergeben und es geht an den Helfer. In dem Helfer, durch diese ID des Produkts, füge ich es in den Warenkorb, aber das macht nicht viel zu diesem Thema. Ich erstelle ein Array von Daten in diesem Helfer und gebe es zurück, und der Controller gibt dieses Array an die Anfrage zurück. Aber wenn ich im Array eine Warnung gebe, damit ich sehen kann, was mich stört, gibt es mir einen Nullwert zurück und ich weiß nicht, warum das passiert.Array gibt einen Nullwert zurück

Ajax-Anfrage:

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

Controller:

$product_id = $this->getRequest()->getPost(); 
echo json_encode(Mage::helper('fol_carousel/cartao')->addCustom($product_id)); 

Array im Helfer erstellt:

$dados['product_name'] = "teste"; 
$dados['product_price'] = "2.99"; 
return $dados; 

Jedes Mal, wenn die Ajax-Anfrage alert ausgeführt wird, gibt sie mir null zurück.

+0

vorausgesetzt, Sie die 'Benachrichtigung bekommen ("Erfolg"),' auch richtig? – Pitchinnate

+0

Das ist richtig ... –

+0

Wenn Sie versuchen, echo json_encode hart zu codieren (array ("product_name" => "teste")) gibt die Warnung den Wert? –

Antwort

0

Die Lösung, die ich für das Problem gefunden habe, war durch Ändern der Rückgabevariable meiner AJAX-Anfrage auf ihren Erfolg und die Angabe einer Array-Position. Indem Sie das alert im Array angeben, gibt es den Wert zurück.

Ajax-Request-Code mit Änderungen:

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

Öffnen Sie das Entwicklerwerkzeug und überprüfen Sie, was in der Antwort des Serveraufrufs vorhanden ist.

Überprüfen Sie, ob der Servercode die von Ihnen geposteten Parameter empfängt und die richtigen Daten zurückgibt.

+0

Ich verstehe nicht viel, was Sie meinten, aber von meinem Verständnis wollen Sie wissen, ob der Server korrekt auf meinen Anruf reagiert. Die Parameter, die sich auf die Produkt-ID beziehen, sind korrekt, da das Produkt vom Helfer hinzugefügt wird (wie ich in der Frage gesagt habe, ist dies in Bezug auf das Array nicht so wichtig). In Bezug auf das Array, hat es eine Ja-Rückgabe, aber ich verstehe nicht, warum es null zurückgibt, da der 'alert (" Erfolg ")' normal ausgeführt wird und danach der 'alert ("dados") 'jedoch der Warnung erscheint als "null". –

0

Sie erhalten null, weil die Daten, die Sie in der Client-Seite als Ajax-Antwort empfangen werden, ist keine gültige JSON-Daten. Entsprechend dem, was ich aus Ihren Kommentaren verstehe, wenn Sie einen JSON-Wert auf der Serverseite fest codierten, erhalten Sie das JSON-Objekt auf der Client-Seite als Antwort, das ist perfekt. So ist das Problem mit den serverseitigen JSON-Antwortdaten, die nicht gültig sind.

Verwandte Themen