jQuery .serialize() macht nichts
Ich habe ein relativ einfaches Formular mit einigen Checkboxen, radiobuttons und selectboxes. Ich möchte hiermit werden alle ausgewählten Formular-Daten mithilfe von jQuery -$.ajax. Aber für einige Grund der form einfach nicht serialisiert. Ich bin mir nicht sicher, was dies verursacht... (Nebenbei bemerkt: $('#FormID').submit(..)
funktioniert auch nicht bei mir). Also ich habe eine Schaltfläche mit dem folgenden code:
$(document).ready(function() {
$('#DoSearchRequest').click(function(event) {
//event.preventDefault(); //read about this somewhere, doesn't help
$('#res').html($('#FormSearch').serialize()); //just some <p> to output the result to
$.ajax({
url: 'http://www.domain.nl/ajax/GetResultsBySearchRequest.php',
data: $('#FormSearch').serialize(),
type: 'POST',
success: function(result) {
console.log(result);
},
error: function(a, b, c) { console.log(a); }
});
return false;
});
});
Mein button ist außerhalb der form (es ist egal, ob es in der form entweder).
Meine form:
<form name="FormSearch" id="FormSearch" method="post">
... form elements
</form>
Ich bin mit jQuery 1.7.1 und jQueryUI 1.8.18
- Sagen Sie, dass die Ajax-Anfrage durchgeführt, sondern auf der server-Seite, die Sie nicht erhalten haben, keine Daten? Tun Sie Ihre Formular-Elemente haben einen
name
- Attribut? Würde es helfen, wenn Sie zeigte den html-Code für mindestens ein paar der Elemente. - Ja, die success-Funktion erreicht ist. Aber die $_POST leer ist, in die ein PHP-Skript. Formular-Elemente haben Namen-Attribute (alle von Ihnen). Ich glaube nicht, dass das problem dort liegt, da
$('#res').html()
leer ist als gut. - Sie haben noch keine anderen Formen (oder andere Elemente) mit derselben id
"FormSearch"
tun Sie? (Wenn Sie es tun, ist wahrscheinlich die erste, der für serialisierte.) Und Sie haben "erfolgreiche" Formular-Felder, d.h. Felder, die aktiviert sind, werden die Checkboxen, die aktiviert sind, etc.? - Nein, es ist die einzige form.
- Können Sie das problem reproduzieren bei jsfiddle.net?
- Dein code ist in Ordnung für mich, so können Sie bitte mit dem rest?
- Eine Vorschau befindet sich bergenmeer.nl/index.php?pageId=SearchResult2.0
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach einem Blick auf die Vorschau der Webseite, ich würde sagen, das problem könnte sein, dass Sie verschachtelte form-element "form543" in einer anderen form-element "Suchleiste".
Tests im Firefox, ich fand, dass
$("#form543").length
war0
so jQuery offensichtlich nicht finden können, die form überhaupt. Als ich versuchte$("#searchbar").serialize()
kehrte er eigentliche Feld-Werte für die Elemente auswählen und die Checkboxen, die ich hatte, überprüft und so weiter.Ich würde vorschlagen, entfernen der äußeren form-element "Suchleiste" (oder anderweitig ändern Sie die markup, so dass Sie nicht haben, verschachtelte Formen) und sehen, ob dein JS-code funktioniert dann.
Dumm, aber für mich war es, dass ich nicht die Namen der Felder in meinem Formular so
.serialize
gab mir eine leere Zeichenfolge ist, wird auch.serializeArray
hat nicht funktioniert.Tun Namen Ihrem Formular Felder, oder Sie bekommen nicht alle Werte.
ist nicht das gleiche wie
.serialize
oder.serializeArray
oder auch Standard-Formular Absenden funktioniert nicht, wenn Sie noch nicht definiert alle Namen, die auf Ihrem Formular Felder.Müssen Sie so etwas wie das :
benutzen name-Attribut für alle Ihre Eingaben in das Formular ein (mit Druckknopf)
E. g.
<input type="text" id="fname" name="fname"/>
Dann können Sie testen, ob die
serial()
Funktion:Dann in Ajax: