2011-12-02 99 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