2010-01-26 7 views
9

Ich versuche, dieses Stück Code zu verwenden, um ein Formular zu serialisieren UND eine zusätzliche Variable zu senden, die nicht im Formular gleichzeitig gefunden wird. Die folgende Codezeile ist, was ich erwartet habe, aber leider nicht funktioniert.Post serialisierte Formulardaten und zusätzliche Variablen mit JQuery

var thePage = theFilename(); 
$.post("pagedetail.php", { $("#PageDetailForm").serialize(), thePage: thePage }, 
    function(data) { 
     alert(data); 
}); 

Irgendwelche Ideen?

Antwort

6
var serialized = $('#PageDetailForm').serialize(); 
    serialized.thePage = thePage; 

    $.post("pagedetail.php", serialized, 
    function(data) { 
     alert(data); 
}); 
+0

Dies scheint die Seite nicht am Ende der Formularwerte hinzuzufügen. Mein Print_R in PHP zeigt nur, dass die Formularfelder eingereicht wurden :(. Schließen obwohl ... Irgendwelche anderen Gedanken ??? – Schodemeiss

+2

Oh ... Ich fand, dass dies funktioniert: var serialized = $ ('# PageDetailForm ') .serialize() + "& thePage =" + thePage; Vielen Dank für Ihre Hilfe !!! – Schodemeiss

+4

Dann versuchen Sie ein hinzuzufügen, mit dem es serialisiert wird der Rest. @Andy Barlow – Kemo

1

Versuchen Sie dies für den zweiten Parameter zu $.post:

{ form: $("#PageDetailForm").serialize(), thePage: thePage } 
+0

Leider dies die Daten aufspaltet in zwei Arrays. Eins mit Form, mit einem Stich darin und ein anderes mit der Seite. Fast da aber :) – Schodemeiss

0

sortable('toArray') Versuchen:

var thePage = theFilename(); 

$.post("pagedetail.php", { pageDetailForm: $("#PageDetailForm").sortable('toArray'), thePage: thePage }, 
    function(data) { 
     alert(data); 
}); 
1

Hoffentlich noch Sie dieses :) brauchen. Versuchen Sie, die serializeArray (Methode) und dann einige zusätzliche Daten in der resultierenden Array schieben, so dass Sie sich nicht gespaltet Arrays etc .:

var postData = $('#form-id').serializeArray(); 
var additionalData = $('#additionalDataID').val(); 
postData.push({name: 'additionalName', value: additionalData}); 

und schließlich:

$.post(URL, postData); 
2

was Sie tun können ist es, die zusätzlichen Daten zu einem versteckten Eingang hinzuzufügen und es in der pagedetail.php Seite zu fangen.

zB Lats sagen, dass Ihre Form

<form id='PageDetailForm'> 
    <input type="hidden" name="value" id="value" value="the value u wamnt to add goes here" /> 
      ....other inputs 
</form> 

danach tun nur Ihre normalen $.post

$.post("#pagedetail.php",$("#PageDetailForm").serialize(),function(data){ 

    $("#ans").html(data); 

// in the pagedetail.php 

$echo $_POST['value']; 

Hoffnung dis helfen, wenn ur immer noch verwirrt hola me @dplumptre

Verwandte Themen