【问题标题】:$.each loop to fill json array not working$.each 循环填充 json 数组不起作用
【发布时间】:2014-06-12 14:48:30
【问题描述】:

我正在尝试填充一个 json 数组以通过 ajax 发送到服务器。但是,它不起作用,我不确定为什么。代码如下:

    var form = $('.dash-name-form');


    form.serializeArray();

    input = [];

    $.each(form[0], function(){

        input.push({

            this.name : this.value
        });
    });

    console.log(JSON.stringify(input));

当我执行以下操作时它会起作用:

    $.each(form[0], function(){

        input.push({

            'name' : this.name, 
            'value': this.value
        });
    });

但我真的很喜欢第一个块的更简化的输出,以便更好地与我正在使用的后端框架一起工作(laravel 的 Input::json()->all() 不适用于第二个)。

非常感谢所有建议。谢谢大家。

【问题讨论】:

  • 您是否知道serializeArray 调用在那里什么都不做?
  • serializeArray()返回的数组设置一个值,`var formData = form.serializeArray();跳过将数据推送到单独的数组,除非您需要过滤或处理数据。

标签: jquery arrays json push each


【解决方案1】:

试试这样:

$.each(form.serializeArray(), function(){
    var obj = {}; 
    obj[this.name] = this.value;
    input.push(obj);
});

【讨论】:

    【解决方案2】:
    input.push({
        this.name : this.value
    });
    

    这看起来会是个问题。 this.name 将被解释为密钥,而不是您所期望的(这与 {"this.name": this.value} 相同)。

    var foo = "bar";
    var x = {
      foo: "test"  
    }
    
    console.log(x);
    

    【讨论】:

      【解决方案3】:

      需要注意serializeArray之类的函数返回值,如果不将值存储在变量中或直接使用它,调用是没有用的

      试试这个吧。 它会以普通对象的形式为您提供表单的数据

      var all =$('.dash-name-form').serializeArray(),
            data = {};
      
      $.each (all, function (key, val){
            data [key]  = val;
      });
      
      console.log (data);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-26
        • 2014-11-12
        • 1970-01-01
        • 2020-09-11
        • 2016-07-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多