使用JQuery发布序列化表单数据和额外变量

时间:2010-01-26 12:05:15

标签: php javascript jquery

我正在尝试使用这段代码来序列化表单并同时发送表单中找不到的额外变量。以下代码行是我所期望的,但遗憾的是不起作用。

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

有什么想法吗?

5 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

你可以做的是将额外的数据添加到隐藏的输入并将其捕获 pagedetail.php页面。

例如lats说你的表格

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

之后,只需执行正常的$.post

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

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

// in the pagedetail.php

$echo $_POST['value'];

如果你仍然困惑我,请希望帮助我@dplumptre

答案 2 :(得分:1)

尝试使用$.post的第二个参数:

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

答案 3 :(得分:1)

希望你还需要这个:)。 尝试使用serializeArray()方法,然后在结果数组中推送一些额外的数据,这样你就没有分割数组等。:

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

最后:

$.post(URL, postData);

答案 4 :(得分:0)

尝试sortable('toArray')

var thePage = theFilename();

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