2011-12-02 100 views
0

我希望添加一个标志值来向PHP例程指示要执行的函数。尝试向现有的表单POST变量添加变量值

我已经尝试了各种选择,似乎没有工作。

我假设它是通过添加我的额外名称/值对来扩展序列化形式变量的情况。

我最新的尝试是

$.ajax etc etc 
data: $('#Form1').serialize().push({ 'phpFlag': 1 }), 

它说我不能用“推”这个目标,我认为是一个阵列上。

任何人都可以让我摆脱我的痛苦。我知道我可以使用隐藏的表单值。

感谢

MCL

回答

0

jQuery的serialize方法返回一个字符串不是数组,只是做这样的事情:

data: $("#Form1").serialize() + "&phpFlag=1"; 
0

你应该使用serializeArrayserialize将返回一个字符串:

var params = $("#Form1").serializeArray(); 
params.push({ name: 'phpFlag', value: 1 }); 
... 
data: params 

或者你可以使用@jakeclarkson答案,因为它更简单。

0

.serialize()返回一个字符串,这就是为什么.push()不起作用。

我想在窗体中添加一个隐藏字段,并在序列化之前给它一个你想要的值。

<form id="Form1"> 
    <!-- the rest of your form --> 
    <input type="hidden" name="phpFlag" value="0"> 
</form> 

data: $('#Form1').find('input[name="phpFlag"]') 
       .val("1") 
       .end() 
       .serialize(); 
+0

谢谢大家。非常好的答案,比我之前发现的答案简单得多。杰克克拉克森的可能是最简单的,但我喜欢你可以修改隐藏字段然后将其序列化的方式。 – mcl

+0

@mcl:不客气。是的,字符串连接看起来很简单。我只是认为任何表单数据都应该出现在表单中。但那只是我的个人意见。 :) – RightSaidFred

+0

是的; @RightSaidFred的答案同样不错。由你决定使用:-) – jabclab