[Php] Textarea in einem Formular sendet nicht per POST mit jQuery AJAX



Answers

Veränderung:

   data:$('#blogForm').serialize(),

Zu:

   data:$('#blogForm').find('input, select, textarea, button').serialize(), 
Question

Aus einem mir unbekannten Grund wird in meinem Formular der eingegebene Text nicht in meine <textarea> eingegeben.

Ajax-Code:

$.ajax({
type:'POST', 
url:'****.php', 
data:$('#blogForm').serialize(),
success: function(responseSubmit) { blah blah etc...

Die Eingaben funktionieren einwandfrei und werden korrekt in meine Datenbank geschrieben.

Das Formular ist:

<form id="blogForm">
                        <input type="date" name="date" id="blogDate">
                        <input type="text" name="title" id="blogTitle">
                        <textarea name="blogContent" id="blogBody"></textarea>
                        <input type="submit" name="submit" id="blogSubmit">
                    </form>

Und was ich bekomme, wenn ich in date=09%2F25%2F1986&title=Title&blogContent= inspiziere, ist der POST: date=09%2F25%2F1986&title=Title&blogContent=

Wie Sie sehen können, ist der BlogContent leer. Warum ist das?




Sie sollten Ihren Editor nicht entfernen müssen - sie arbeiten normalerweise mit JS, um die verborgene Textfläche nach jedem Tastendruck zu aktualisieren, oder wenn das Formular übermittelt wird, so dass dies keinen Unterschied machen sollte, vorausgesetzt, der Editor erhält dieses Bit richtig.

Ich kann mir vorstellen, dass das Problem so ist, wie es Phillip vorgeschlagen hat - dass sich Ihre ID- und Namensattribute unterscheiden. Alle anderen passen gut zusammen. Wenn es serialisiert, muss es die IDs verwenden, und vermutlich erwarten Sie in Ihrem Skript auf der anderen Seite, dass die Namen trotzdem kommen (was eine normale Formularübergabe tun würde).

Da Sie über $ POST senden, tun Sie einfach eine var_dump ($ _ POST); in Ihrem Skript und loggen Sie das dann auf der Konsole oder alarmieren Sie es in Ihrem JavaScript - sehen Sie, was genau über AJAX zu Ihrem Skript gesendet wird.

Wenn der Textbereich unter keinem Namen vorhanden ist, dann wissen Sie, dass das Problem definitiv der Editor ist. Wenn dies der Fall ist, versuchen Sie, die Methoden für nicEditor manuell aufzurufen, wodurch das versteckte Textfeld aktualisiert wird.




Fügen Sie "false" hinzu

<code>
<form id="blogForm" onsubmit="return(false);">  
    <input type="date" name="date" id="blogDate">
    <input type="text" name="title" id="blogTitle">
    <textarea name="blogContent" id="blogBody"></textarea>
    <input type="submit" name="submit" id="blogSubmit">    
  </form></code>

Rufen Sie Ajax beim Klicken auf die Schaltfläche

$("#blogSubmit").on('click',function(){      

$.ajax({
type:'POST', 
url:'****.php', 
data:$('#blogForm').serialize(),
success: function(responseSubmit) { blah blah etc...

});



Links