разместить HTML ассоциативный массив с помощью jquery

0

У меня есть форма с массивом входных элементов, как показано ниже.

<form method="post" action="sample.php">
<input type="text" name="field[txt][name]" />
<input type="text" name="field[txt][sex]" />
<input type="text" name="field[txt][location]" />
<br /><br />
<input type="text" name="field[num][age]" />
<input type="text" name="field[date][pod]" />
<input type="text" name="field[date][doj]" />
<br /><br />
<input type="submit" name="submit" />
</form>

php - print_r ($ _ POST ['field']) дает мне результат, похожий на следующий, когда я отправляю форму как обычно. Как я могу использовать метод jquery-post для отправки 'field [] []' элемента, чтобы получить тот же результат?

Array(
    [txt] => Array
        (
            [name] => sam
            [sex] => male
            [location] => somewhere
        )
    [num] => Array
        (
            [age] => 20
        )
    [date] => Array
        (
            [pob] => 2001-01-01
            [doj] => 2001-01-01
        )
)

Любая помощь будет высоко оценен.

Теги:

3 ответа

1
Лучший ответ

Вы можете использовать обычный объект javascript в качестве параметра data, а jQuery позаботится о сериализации его как параметра url:

var data = {
    fields: {
        txt: {
            name: "sam",
            sex: "male",
            location: "somewhere"
        },
        num: {
            age: 20
        },
        date: {
             pob: "2001-01-01",
             doj: "2001-01-01"
        }
    }
};
$.post(url, data, function(answer){ ... });
  • 0
    Прежде всего, большое спасибо за все предложения. Поэтому я сделал несколько изменений и получил то, что хотел. Я добавляю атрибут класса к элементам ввода как «mc». Поэтому я могу использовать data={mc: $('.mc').serialize()} и на стороне php parse_str($_POST['data']['mc']);print_r($field);
  • 0
    Это может быть улучшено или могут быть серьезные ошибки? Пожалуйста, предложите. Благодарю.
Показать ещё 1 комментарий
2

Использование:

var postData = $("#formId").serializeArray();
$.post(url, postData, function(response){ //do something });
0

попробуйте jquery .Serializre()

var values = $("form").first().serialize();

Этот код получит все значения и сериализует данные в Url Data: "& field [txt] [name] = foo1 & field [txt] [sex] = male"

то вы используете Ajax:

$.ajax({url: $("form").first().attr("action"), data: values })

Ещё вопросы

Сообщество Overcoder
Наверх
Меню