2017-10-27 1 views
0

Hallo Leute, ich verstehe nicht, was ist das Problem mit meinem Code. Ich werde wirklich dankbar sein, wenn mir jemand hilft. Die Werte der Parameter in PHP ändern sich nie.AJAX Variablen Javascript zu PHP funktioniert nicht

Die Form

<form id= 'id' method="post" ><input type='text' value='<?php echo $var1; ?>' name='<?php echo $var3; ?>'> <input type='text' value='<?php echo $var2; ?>' name='<?php echo $var3; ?>'><input type='submit' value='Update' onclick = 'update("<?php echo $var1 ?>", "<?php echo $var2 ?>", "<?php echo $var3 ?>"); '><br></form> 

Die JavaScript

function update(var1, var2, var3){ 
    $.ajax({ 
     type: 'post', 
     url: 'file.php', 
     data: { 
      'var1' : var1, 
      'var2' : var2, 
      'var3' : var3 
     }, 

    }); 
} 

Und die PHP:

$var1 = ''; 
if(isset($_POST['var1'])) 
    $var1 = $_POST['va1']; 

$var2 = ''; 
if(isset($_POST['var2'])) 
    $var2 = $_POST['var2']; 

$var3 = ''; 
if(isset($_POST['var3'])) 
    $var3 = $_POST['var3']; 
+0

Willkommen bei Stackoverflow! Könnten Sie das tatsächliche Problem zu Ihrer Frage hinzufügen oder was Sie erwarten? –

+0

Sie müssen Ihre Variablen in irgendeiner Weise ausgeben, wenn Sie möchten, dass sie an Ihre Ajax-Anfrage zurückgegeben werden. Auch Ihre ternaries setzt Ihre Variablen bereits auf die richtigen Werte. Die 'if's sind völlig redundant. –

+0

Ist der 'URL'-Parameter auf einen richtigen/bestehenden Pfad? Was siehst du in deiner JS-Konsole? – Kyrre

Antwort

-1

Wenn es eine $_POST ist man mit isset überprüfen sollten, sollte das ausreichen. Keine Notwendigkeit für die !empty

$var1 = isset($_POST['var1']) ? $_POST['var1'] : ""; 
+1

Dies sollte ein Kommentar sein, da es das Ergebnis des Skripts tatsächlich nicht viel ändert. Wir wissen nicht einmal, ob der Ajax des OPs an die richtige URL sendet oder ob es einen Code gibt, der die Variablen tatsächlich ausgibt. –

0

Ihr JavaScript tut dies:

success: function(data) { 
    console.log(data); 
} 

So was auch immer die Ausgabe des PHP-Skript ist, wird es in Ihrem Browser-Entwickler-Tools an der Konsole angemeldet sein .


Ihre PHP, tut dies:

$var1 = !empty($_POST['var1']) ? $_POST['var1'] : ''; 
if(isset($_POST['var1'])) 
    $var1 = $_POST['va1']; 

Dies ist überflüssig, weil man im Grunde zweimal das gleiche tun:

$var1 = !empty($_POST['var1']) ? $_POST['var1'] : ''; 

... ausreichend.


Das ist jedoch alle die PHP tut.

Es setzt die Variablen und gibt dann nichts aus.

Wenn Sie also data im JS protokollieren, wird nichts ausgegeben.

Sie müssen das PHP ändern, damit es etwas mit den Variablen macht, wenn Sie etwas Nützliches wollen.


Sie haben auch gesagt:

<input type='text' value='<?php echo $var1; ?>' 

dem Sie die Variablen Einstellung legt nahe, könnte erwarten, dass die Werte in den Eingängen zu ändern.

Dies wird nicht passieren.

  1. Sie führen ein Programm aus und haben eine Ausgabe (ein HTML-Dokument).
  2. Sie lief ein anderes Programm und bekam keine Ausgabe

Sie sind verschiedene Programme (oder möglicherweise sind sie das gleiche Programm laufen zu unterschiedlichen Zeiten).

Das zweite Programm hat keinen Einfluss auf die Ausgabe des ersten Programms.

Betrachten Sie dies als Vergleich:

  1. ein Dokument in Microsoft Word schreiben
  2. drucken es
  3. ein anderes Dokument in Microsoft Word schreiben
  4. Blick auf das Papier

Was Sie auf dem Papier gedruckt haben, hat sich geändert, nur weil Sie ein anderes Dokument geschrieben haben.

Wenn Sie die Werte der Eingaben ändern möchten, müssen Sie die Daten an den Browser senden und sie mit JavaScript ändern.

Zuerst gibt die Daten in einem vernünftigen Format:

header("Content-Type: application/json"); 
echo json_encode({ 
    var1 => $var1, 
    var2 => $var2, 
    var3 => $var3, 
}); 

dann die JS schreiben etwas mit diesen Daten zu tun:

success: function(data) { 
     // This sets the value of the first input element in the document by way of example. Extrapolate from there to set the things you actually care about 
     jQuery("input").val(data.var1); 
    } 
+0

Gibt es eine Möglichkeit, AJAX ohne Erfolgsteil zu arbeiten, weil ich genau das gleiche benutze und es funktioniert, der einzige Unterschied ist, dass ich nur eine Var in der anderen Methode habe – Zotov