【问题标题】:jQuery post() with serialize and array of data带有序列化和数据数组的 jQuery post()
【发布时间】:2012-08-08 15:32:20
【问题描述】:

我无法在 mvc 3 中发布期间获得收藏价值。 它返回 null。

$.post("/Work/Post", { vm: $('#myForm').serializeArray(), 'collection': ['a', 'b', 'c'] });

//Or


var data = $('#myForm').serializeArray();
data.push({ name: 'collection', value: ['a', 'b', 'c'] });
$.post("/Work/Post", data);

//Or

var data = $('#myForm').serializeArray();
data.push({ name: 'collection[]', value: ['a', 'b', 'c'] });
$.post("/Work/Post", data);

【问题讨论】:

  • 尝试直接使用 .ajax 而不是 .post 看看是否有所收获
  • 使用 Firebug 或类似工具查看作为请求的一部分发送的数据,并检查它是否与您期望/需要在服务器上的格式匹配。

标签: jquery jquery-post


【解决方案1】:

我在传递数组时遇到了类似的问题。

而不是使用$.post 使用$.ajax 并设置traditional 选项= true ...

$.ajax({
    type: "POST",
    url: "Work/",
    traditional: true,
    data: { collection: ['a','b','c'] }
});

traditional: true 选项很重要

【讨论】:

    【解决方案2】:

    我用常规的 .ajax() 调用将我的头撞在墙上好几个月了。

    我最终发现你需要在 $.ajax() 的参数列表中设置traditional: true。 (请参阅此处的“传统”标题:http://api.jquery.com/jQuery.ajax/

    由于没有 $.post() 的参数列表,我不确定您是否可以使用 $.post() 执行此操作。但是使用 $.ajax() 的代码并不多。

    【讨论】:

      【解决方案3】:
                      var model = $('#myForm').serializeArray();
      
                      $.map(['a', 'b', 'c'], function (val, i) {
                          return model.push({ "name": "collection[" + i + "]", "value": val });
                      });
      
                      $.post("/Work/Post", model);
                      //OR
                      $.post("/Work/Post", model, function (data) {
                          //After Success
                      });
      

      【讨论】:

      • 更多人应该知道jquery ajax数据模型的名称值对用法。
      【解决方案4】:

      以下内容对我有用。您可以如下使用 serializeArray() serializeJSON() 并将其设置为数据元素。观察 formData 变量。

      var formData = $('#inputForm').serializeJSON();
      $.ajax({
          type : "POST",
          url: server_side_url,
          cache:false,
          traditional: true,
          data: formData,
          dataType: "json",
          success: function(data, textStatus, jqXHR){
              console.log("successfully processed.");
          },
          error: function(xhr,status,error){
              console.log("error occurred.");
          }
      }); 
      

      【讨论】:

        猜你喜欢
        • 2011-10-01
        • 1970-01-01
        • 2023-03-11
        • 2010-10-29
        • 2019-03-11
        • 1970-01-01
        • 2011-10-14
        • 1970-01-01
        • 2012-09-07
        相关资源
        最近更新 更多