使用JQuery动态地通过ajax以json格式发送表单数据

时间:2012-07-14 10:21:55

标签: php javascript ajax json

我喜欢如何通过ajax动态地以json格式发送json格式的表单数据? 例如,我在JQ编写类似的东西:

$.post("test.php", { func: "getNameAndTime" },
    function(data){
      alert(data.name); // John
      console.log(data.time); //  2pm
    }, "json");

这很好,但在实时应用程序中经常需要发送大量表单数据,用户可以动态更改字段,所以我不知道将发送多少func1,func2,func3甚至func []。 q是如何动态地执行此操作,在AJAX的旧世界中,我可以通过实现表单并发送到服务器来完成它。 提前完成。

2 个答案:

答案 0 :(得分:5)

是的我可以将所有数据发送到服务器,无论如何它都能正常运行, 例如:

$(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;
});

});

答案 1 :(得分:3)

可以为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