2011-01-05 12 views
3

Я хотел бы сделать что-то вроде этого (псевдо-код):

<form id='f1'> 
<input type='text' name='t1'/> 
<input type='text' name='t2'/> 
<input type='text' name='t3'/> 
</form> 

var ids=[9,32,45]; 
$.post(
"test.php", 
{$("#testform").serialize(), page: 7, ids: ids}, 
function(){ alert('success!'); } 
); 

на стороне сервера Я хочу, чтобы поля из форма + страница и идентификаторы

Возможно ли это?

+0

вы должны проверить ajaxForm http://jquery.malsup.com/form/, по крайней мере, вы можете увидеть, как они сериализуют значения формы. – dotjoe

ответ

7

Вам нужно создать массив значений с .serializeArray() (где, как .serialize() создает строку), а затем добавить к нему, прежде чем использовать в качестве data аргумента $.post(), как это:

var data = $("#testform").serializeArray(); 
data.push({ name: "abc", value: "1" }); 
data.push({ name: "ef", value: "3" }); 
$.post("test.php", data, function(){ alert('success!'); }); 

Затем вы проходите в массив, как и передача объекта, а затем $.param() вызывается внутренне, превращая его в строку данных для запроса POST.

+0

Извините, я добавил еще один параметр (массив), не знаю, имеет ли значение – Omu

+0

@Omu - нет, не имеет значения, просто надавите на массив так же, сколько хотите. Обратите внимание, что вы можете контролировать, как этот массив сериализуется с помощью '$ .param (data, true)' вместо 'data' или перед вызовом:' $ .ajaxSettings.traditional = true' (по умолчанию false). –

+0

извините, он не работает, я снова отредактировал свой вопрос, так что это будет именно то, что я делаю – Omu

Смежные вопросы