22 Stimmen

jquery serialize und $.post

Ich versuche, eine Menge von Daten aus einem Formular mit der $.post-Methode in jQuery zu senden. Ich habe die serialize()-Funktion zuerst verwendet, um alle Formulardaten in eine lange Zeichenfolge zu machen, die ich dann serverseitig explodieren wird. Das Seltsame ist, wenn ich versuche, es mit $.post zu senden, wird das Ergebnis von serialize() an die URL angehängt, als ob ich es mit GET senden würde. Hat jemand eine Idee, warum das passiert?

Hier ist die Jquery:

$("#addShowFormSubmit").click(function(){
  var perfTimes = $("#addShowForm").serialize();
  $.post("includes/add_show.php", {name: $("#showTitle").val(), results: perfTimes }, function(data) {
    $("#addShowSuccess").empty().slideDown("slow").append(data);
  });
});  

hier ist das php:

$show = $_POST['name'];
$results = $_POST['results'];
$perfs = explode("&", $results);
foreach($perfs as $perf) {
    $perf_key_values = explode("=", $perf);
    $key = urldecode($perf_key_values[0]);
    $values = urldecode($perf_key_values[1]);
}
echo $key, $values;

0voto

Chris Rasco Punkte 2603

Auf der php-Seite sollten Sie sich Folgendes ansehen Parse_str . Es wird diese URL-Zeichenfolge in Variablen oder in ein Array zerlegen, wenn Sie den zweiten optionalen Parameter verwenden.

0voto

Jake Wilson Punkte 83540

Ein weiterer möglicher Grund für dieses Problem: Wenn Sie ein Formular haben, dem keine Übermittlungsaktion zugewiesen ist, wird das Formular immer dann an die aktuelle URL übermittelt, wenn Sie beim Ausfüllen des Formulars die "ENTER"-Taste drücken, so dass die serialisierten Daten in der URL erscheinen, als ob Sie eine GET-Ajax-Transaktion verwenden würden. Eine einfache Lösung für dieses Problem besteht darin, zu verhindern, dass die ENTER-Taste gedrückt wird, um das Formular zu übermitteln:

//Prevent Form Submission when Pressing Enter
$("form").bind("keypress", function(e) {
if (e.keyCode == 13)
    return false;
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X