【问题标题】:Send post form data in json format via ajax with JQuery dynamically使用 JQuery 通过 ajax 动态发送 json 格式的表单数据
【发布时间】:2012-07-14 00:56:37
【问题描述】:

我徘徊如何通过 ajax 使用 JQuery 动态发送 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 的旧世界中,我可以通过将表单发送到服务器来完成它。 提前谢谢。

【问题讨论】:

  • 感谢 Utkanos(+1 点)的解决方案,他建议用类命名字段并将其传递给 $.each JQ 函数,但我们可以在不依赖类或id,只发送整个表格?如果没有,我们可以发送多个表单项,例如 input name="email[]" 等吗?

标签: php javascript ajax json


【解决方案1】:

是的,我可以将所有数据发送到服务器,无论如何它都会很好地工作, 示例:

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

});

【讨论】:

  • 这根本不会发送 json 格式的表单数据。 dataType: json 只告诉 ajax 请求它期望返回数据是 json。
【解决方案2】:

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

【讨论】:

  • 还有一件事,如果有多个像name="emial[]"这样的字段怎么办?我认为这种方法不适用于该目的。
  • 正如我在回答中所说,编译数据的方式取决于您,我无法预测。我假设了一个人为的示例,您只想从user_input 字段中收集值。我只是表明,是的,您可以构建动态 AJAX 数据。 Я не русский но может кажется так, из-за моего юзернейм。 Я в России жил в течении 4 лет.
  • Охереть, ты Англичанен-программист, который жил в россии 4 года - круто =) 是的,你的用户名告诉我俄罗斯的概率。
猜你喜欢
  • 1970-01-01
  • 2016-07-17
  • 2013-03-04
  • 2015-08-21
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多