2017-03-23 4 views
0

Ich bin ziemlich neu beim Posten auf StackOverflow, also hoffe ich, dass mein Beitrag den richtigen Kriterien folgt, wenn ich mich nicht entschuldige. Ich werde versuchen, meine Frage und Erklärung meines Problems so kurz wie möglich zu halten.Wie kann ich die Ajax "POST" -Methode von der Rückgabe einer leeren Datenkette lösen?

Ich versuche, ein Eingabefeld zu erstellen, das es dem Benutzer ermöglicht, den About-Abschnitt in seinem Profil zu aktualisieren, damit andere Benutzer ihn sehen können. Ich habe ähnliche Beiträge angeschaut, aber keine von ihnen hatte wirklich Lösungen, die meinem Problem entsprachen, was ich finden konnte.

Ich verwende ein Formular mit einer POST-Methode, die ein ausgeblendetes Feld enthält, das den Wert der Benutzer-ID enthält, und speichert die Zeichenfolge aus dem Eingabefeld. Ich verwende eine Onclick-Funktion, die der Schaltfläche mit der id = "post" zugeordnet ist, die eine Ajax-Anforderung aufruft, die den Wert der Eingabe in einer Variablen speichert, die als var text bekannt ist, die ich dann in einer Datenbank mit der userId und dem Kommentar speichern möchte. Die Konsole gab jedoch "eine leere Zeichenfolge" zurück (Bild ganz unten). Ich bin mir nicht sicher, wie ich es herausfinden soll, da ich immer noch sehr neu in Ajax bin und ich versuche so viel wie möglich zu lernen.

myAccount.php

<h2>About</h2>  
<form method='POST' id="postForm"> 
<input type='hidden' name='posterId' value="<?php echo $user['userId']?>"> 
<input name="post" id='post' value=""> 
<br/> 
<br/> 
<button type="button" onclick='setComment()' name='submit'>Post it</button> 
</form> 

main.js

function setComment() { 
    var text = $("#post").val(); 
    $.ajax({ 
     type: 'POST', 
     url: 'setAbout.php', 
     data: {'text': text}, 
     success: function(data) { 
      console.log(data); 
     } 
    }); 
} 

Return "an empty string"

Hinweis: Wenn Sie eine Lösung fügen Sie bitte eine Erklärung, warum schreiben Sie nahm dieser bestimmte Ansatz seit ich hier bin o lernen. Vielen Dank!

+0

, weil Sie nichts zurückgeben. Sie können etwas wie 'echo json_encode ($ result)' haben – guradio

+0

Sie reichen nicht die 'posterId' und [Exploits einer Mutter] (https://xkcd.com/327/)/[Bobby Tables - Ein Leitfaden für Verhindern der SQL-Injektion] (http://bobby-tables.com/) – Andreas

+0

@Andreas Wie soll die 'real_escape_string()' verwendet werden. Ich hatte immer den Eindruck, dass Sie den $ _POST-Variablen entkommen sind. – jase

Antwort

0
<input type='hidden' name='posterId' value="<?php echo $user['userId']?>" id = 'posterId'> 

function setComment() { 
    var text = $("#post").val(); 
    var posterId=$('#posterId').val(); 
    $.ajax({ 
    type: 'POST', 
    url: 'setAbout.php', 
    data: {'text': text, 'posterId':posterId}, 
    success: function(data){ 
     console.log(data); 
    } 
}); 
} 

Sie für die Variable posterId in Ihrem PHP-Skript überprüft, die Sie nicht festgelegt haben, während die Ajax-Aufruf zu tun.

und im Skript führen Sie nur die vorbereitete Abfrage aus, Sie geben nichts als Antwort auf Ihre Anfrage zurück. Selbst wenn die Anforderung erfolgreich ist, erhalten Sie nichts in der Antwort zum Drucken in Ihrer Konsole

+0

Das macht jetzt Sinn. Vielen Dank! – jase

0

Sie, Post mit AJAX: {Text} Variable, aber in PHP-Code möchten Sie {PosterId} Variable erhalten. Warum? Ändere deinen Variablennamen und sichere in JS und PHP die gleichnamige Variable. Und in AJAX-Anfrage kann PHP nichts zurückgeben. In PHP-Code sollten Sie daher 'echo' für die Rückgabe verwenden.

Verwandte Themen