Я блуждаю, как динамически отправлять данные формы сообщения в формате json через ajax с JQuery? Например, я кодирую что-то подобное в JQ:
$.post("test.php", { func: "getNameAndTime" }, function(data){ alert(data.name); // John console.log(data.time); // 2pm }, "json");
и это хорошо, но в реальных приложениях часто нужно отправлять огромные данные формы, и пользователь может динамически изменять поля, поэтому я не знаю, сколько будет отправлено func1, func2, func3 или даже func []. Q – это то, как это сделать динамически, в старом мире AJAX я мог бы сделать это путем сверки формы и отправки на сервер. Thanx заранее.
Да, я могу отправить все данные на сервер, и в любом случае это сработает, например:
$(function() { // on document load $('#email_form').submit(function() { // set onsubmit event to the form var data = $('#email_form').serialize(); // serialize all the data in the form $.ajax({ url: 'testJson.php', // php script to retern json encoded string data: data, // serialized data to send on server dataType:'json', // set recieving type - JSON in case of a question type:'POST', // set sending HTTP Request type async:false, success: function(data) { // callback method for further manipulations for (key in data.email) { alert(data.email[key]); } }, error: function(data) { // if error occured } }); return false; });
});
Можно создать динамические данные для запроса AJAX, но, очевидно, вам нужно знать логику для получения этих динамических данных. Вы не описываете это в своем вопросе, поэтому в приведенном ниже примере я предполагаю, что он основан на количестве полей .user_input
в форме (которая может быть 2 или 10 или что-то еще). Затем данные состоят из значения поля + поля.
Дело в том, чтобы показать динамический сбор данных, вот и все.
var ajax_data = {}; $('.user_input').each(function() { ajax_data[$(this).attr('name')] = $(this).val(); }); $.post('some/url.php', ajax_ata); //etc