2017-06-06 3 views
0

Ich versuche, einige Variablen auf Codeignitor-Controller-Funktion durch Ajax, aber ts, was zu einer Fehlermeldung.Coderogger/Ajax. Veröffentlichen von Parametern durch Ajax an Codeignitor-Controller.

Dies ist mein Javascript-Funktion

$(document).ready(function() 
{ 

    $('.add_cart').click(function(){ 
     var quantity = $('#qty').val(); 
     var product_id = $(this).data("productid"); 
     var product_name = $(this).data("productname"); 
     var product_price = $(this).data("price"); 

     if(quantity != '' && quantity > 0) 
      { 
      $.ajax({ 
      url:"<?php echo base_url(); ?>products/add_product_to_cart", 
      method:"POST", 
      data:{product_id:product_id, product_name:product_name, product_price:product_price, quantity:quantity}, 
      success:function(data) 
      { 
       alert('success'); 
      } 
      }); 
      } 
      else 
      { 
      alert("Please Enter quantity"); 
      } 

     }); 
     }); 

Hier ist meine Controller-Funktion.

public function add_product_to_cart() 
{ 

    echo $_POST["product_id"]; 

} 

Aber wenn ich verfolgen den gesamten Prozess durch firebug .Seine den Fehler geben, die variable product_id undefiniert oder druckt nicht irgend etwas, wenn ich versuche, es zu echo wie unten angegeben.

Hier ist der Screenshot. enter image description here

Kann mir jemand helfen, wie man das richtig macht oder gibt es eine spezielle Datei, die Sie für Ajax-Funktionen benötigen?

Vielen Dank.

Antwort

2

Mit Codeigniter (Version 2 oder 3), sollten Sie Folgendes verwenden:

$product_id = $this->input->post('product_id'); 

ist die Dokumentation, wenn die Eingänge in Codeigniter mit:

Using Codeigniter Inputs

Ajax Request (Debugging):

Wenn Sie einen Ajax-Anruf ausführen, gehen Sie in Chrome zu Inspector und sehen Sie sich die gesendeten Ajax-Anfragen an. Dadurch können Sie die Werte anzeigen, die an den Server gesendet wurden. (Rechtsklick auf Maus)

Inspect -> Network (toggle on XHR) 

Dann Formular verwenden, um eine Ajax-Anforderung einreichen, und ein neues Element auf dem Tisch in dem Registerkarte Netzwerk zeigen sollte, klicken Sie darauf, um Header zu gehen, und nach unten scrollen. Es zeigt Ihnen alle Informationen, die Sie mit Ihrer Ajax-Anfrage benötigen, und stellt sicher, dass sie ordnungsgemäß gesendet werden.

UPDATE:

Als Kelvin wies darauf hin, müssen Sie Ihre Ajax von Methode aktualisieren, über den Antrag zu geben.

method:"POST" zu type:"POST"

+0

actualy ist ok _POST $ verwenden, das Problem ist, die Post-Daten sind nicht gut an den Controller übergeben, es gibt ein Problem auf seiner Ajax-Anfrage – Kelvin

+0

@Kelvin Sie sind richtig. Der Ajax ist falsch. Ja, es ist okay, direkte Servervariablen zu verwenden, aber dafür ist das Framework da, Sicherheit und Benutzerfreundlichkeit. – timothymarois

0
$.ajax({ 
    url:"<?php echo base_url(); ?>products/add_product_to_cart", 
    type:"POST", 
    data:{product_id:product_id, product_name:product_name, product_price:product_price, quantity:quantity}, 
    success:function(data) 
    { 
     alert('success'); 
    } 
); 

in Ihrem method : "POST" es type: "POST", Ajax tut Änderung wie html die gleiche Art und Weise verwendet wird.

0
var var_data = {product_id:product_id, 
        product_name:product_name, 
        product_price:product_price, 
        quantity:quantity} 
    $.ajax({ 
     url:"<?php echo base_url(); ?>products/add_product_to_cart", 
     type:"POST", 
     dataType : 'json', 
     async : false, 
     data:var_data, 
     success:function(data) 
     { 
      alert('success'); 
     } 
     }); 

in Controller-Funktion erhalten die Post-Array von var_data

wie

$post_data = $this->input->post('var_data',true); 
    print_r($post_data); 

versuchen Sie es wie diese Hilfe sein kann, ändern Methode

0

gibt es einen Syntaxfehler

eingeben
$(document).ready(function() 
{ 

$('.add_cart').click(function(){ 
    var quantity = $('#qty').val(); 
    var product_id = $(this).data("productid"); 
    var product_name = $(this).data("productname"); 
    var product_price = $(this).data("price"); 

    if(quantity != '' && quantity > 0) 
    { 
     $.ajax({ 
     url:"<?php echo base_url(); ?>products/add_product_to_cart", 
     method:"POST", 
     data:{"product_id":product_id, "product_name":product_name, "product_price":product_price, "quantity":quantity}, 
     success:function(data) 
     { 
      alert('success'); 
     } 
     }); 
     } 
     else 
     { 
     alert("Please Enter quantity"); 
     } 

    }); 
    }); 

die Parameter shoulb wie diese Daten sein: { "product_id": product_id "product_name": product_name "PRODUCT_PRICE": PRODUCT_PRICE "Quantität": Menge},

+0

Ich denke, es ist wie du vorgeschlagen hast. –

Verwandte Themen