2016-12-20 8 views
2

Ich habe diese SchaltflächeSenden js Wert php-Controller von Ajax

<button id="<?php echo $u['id']?>" name="activation" onclick="handleButton(this);" type="submit" class="btn btn-success"></button> 

Und diese Schaltfläche im Zusammenhang mit diesen

<td id="<?php echo $u['id']?>"><?php echo $u['id']?></td> 

ich dieses Skript bin mit Wert-Taste, um meinen PHP-Controller zu senden

function handleButton(obj) { 
    var javascriptVariable = obj.id; 
// alert (javascriptVariable); 
    $.ajax({ 
      type: "POST", 
      url: "<?php echo base_url(); ?>index.php/admin/active_users", 
      dataType: 'text', 
      data: 'myname='+javascriptVariable, 
      success: function (data){ 
      } 

    }); 
} 

Als ich Alarm verwenden, ist das Ergebnis javascriptVariable richtig und ich möchte es in meinem Controller so bin ich tr ying in meinem Controller, dies zu tun:

if(isset($_POST['activation'])) 
{ 
    $name = $this->input->post('myname'); 
    var_dump($name); 
} 

Aber ich bekomme null Wert, was ist das denn?

+2

Aber Sie fordern den _POST Variable $ 'myname' also wird es im Array $ _POST nichts geben, was 'activation' genannt wird. – RiggsFolly

+2

Bessere Art Parameter zu übergeben' data: {myname: javascriptVariable}, ' – RiggsFolly

+0

Ist Ihr Button in einem Formular? –

Antwort

0

Versuchen Sie dies in Ihrer Ajax-Funktion:

function handleButton(obj) { 
    var javascriptVariable = obj.id; 
    //alert (javascriptVariable); 
    $.ajax({ 
     type: "POST", 
     url: "<?php echo base_url(); ?>index.php/admin/active_users", 
     dataType: 'text', 
     data: {myname: javascriptVariable}, 
     success: function (data) {} 
    }); 
} 

Und in Ihrem PHP-Skript, können Sie $_POST['myname'] tun, um es (vielleicht $this->input->post('myname') arbeiten können, können Sie es testen)

+0

@MacBooc 'DataType' identifiziert, welche Daten an den Javascript zurückgegeben werden nicht das, was von der Javascript – RiggsFolly

+0

@RiggsFolly meinem schlecht ich das Handbuch gesendet wird kurz nach – MacBooc

+0

@MacBooc Kein Problem ja gelesen, es ist wahrscheinlich ein nützliche Ergänzung zu den OP-Wissen sowieso – RiggsFolly

0

Schauen zwei id

<button id="<?php echo $u['id']?>" name="activation" onclick="handleButton(this);" type="submit" class="btn btn-success"></button> 

UND

<td id="<?php echo $u['id']?>"><?php echo $u['id']?></td> 

für HTML-Elemente id sind same.It kann nicht mit in dem gleichen page.This verwendet werden kann, ein Problem für Sie verursachen ...

+0

aber das Ergebnis ist korrekt, wenn ich JavaScript-Variable warnen! –

+0

dann congrats..aber versuchen Sie, mit anderen 'ID' zu arbeiten.Aber Fall Alarmierungswert statt ID-Namen Problem kann entstehen. –

1

Da der PHP-Skript durch einen zweiten POST Variable bedingt ist [if(isset($_POST['activation'])) ], sollten Sie das auch posten.

function handleButton(obj) { 
    var javascriptVariable = obj.id; 
// alert (javascriptVariable); 
    $.ajax({ 
      type: "POST", 
      url: "<?php echo base_url(); ?>index.php/admin/active_users", 
      dataType: 'text', 
      data: 'myname='+javascriptVariable+'&activation=1',// <-- RIGHT HERE 
      success: function (data){ 
       alert(data); 
      } 

    }); 
} 

SIDE HINWEIS: Sie könnten auch echo statt Dump die Variable:

if(isset($_POST['activation'])) 
{ 
    echo $this->input->post('myname'); 
} 
5

Wenn Sie Daten aus dem Browser über AJAX passieren nur die Daten, die Sie im data: Parameter übergeben wird an die PHP gesendet Skript.

Also, wenn Sie für activation in das PHP-Skript testen möchten, müssen Sie eigentlich, dass Parameter senden

Auch die Änderung des data: Parameter Schaffung unten. Es ist einfacher zu lesen und viel einfacher, korrekt zu codieren, wenn Sie mehr als einen Parameter übergeben, da Sie sich nicht an & 's und + Verkettung erinnern müssen.

function handleButton(obj) { 
    obj.preventDefault(); 
    $.ajax({ 
     type: "POST", 
     url: "<?php echo base_url(); ?>index.php/admin/active_users", 
     dataType: 'text', 
     data: {activation: 1, myname: obj.id}, // add parameter 
     success: function (data){ 
      alert(data); 
     } 

    }); 
} 

Nun ist die PHP 2 Parameter im

$ _POST Array activation und myname sehen
if(isset($_POST['activation'])) 
{ 
    $name = $_POST['myname']; 
    var_dumb($name); 
} 

Oder wenn Sie einen Rahmen verwenden, die ich nehme an, Sie sind

if(isset($this->input->post('activation')) { 
    $name = $this->input->post('myname'); 
    var_dumb($name); 
} 

EDIT:

Spotted ein anderes Problem, das Ihr Knopf ein attribu hat te type="submit" Dies wird dazu führen, dass das Javascript so gut ausgeführt wird, wie das Formular, das auf die normale Weise übermittelt wird.

Entfernen Sie das type="submit" Attribut und doppelt sicher sein, dass die Form nicht so gut eingereicht werden, wie das AJAX einen Aufruf an preventDefault(); als auch vor dem Aufruf AJAX hinzufügen

+0

@ValiS gut nicht, wenn man sich den Zeitstempel schaut auf meinem ersten Kommentar unter der Frage – RiggsFolly

+0

nicht sehen, dass –

+0

ich Ihre Lösung müde, aber immer noch null –