【问题标题】:JSON.Stringify includes indexes and length of arrayJSON.Stringify 包括索引和数组长度
【发布时间】:2017-10-13 08:21:03
【问题描述】:

当我使用 AJAX 将数组发送到我的控制器时,我将其转换为 JSON 以方便使用。

我这样构建我的数组:

$("#selectedDropdown option").each(function () {
     selectedLanguages.push($(this).val());
});

我像这样对它进行字符串化:

data["PreferredLanguages"] = $(selectedLanguages);

但是当它到达我的控制器时,它看起来像这样:

"PreferredLanguages":{"0":"ZA","1":"CM","2":"GH","3":"ES","length":4}} 

注意:它甚至不像一个数组。

这会阻止我反序列化它。我该如何解决这个问题?

【问题讨论】:

    标签: arrays json stringify


    【解决方案1】:

    $(selectedLanguages) 不会对您的数组进行字符串化。 $ 是 jQuery 对象的 constructor

    您可以使用global JSON object 来字符串化您的数组:

    data["PreferredLanguages"] = JSON.stringify(selectedLanguages);
    

    你可以通过运行这个 sn-p 来查看数组和 jQuery 对象之间的区别:

    var arr = ['a','b','c'];
    var $arr = $(arr);
    
    console.log('$arr:', JSON.stringify($arr));
    console.log('$arr is an array:', Array.isArray($arr));
    
    console.log('arr:', JSON.stringify(arr));
    console.log('arr is an array:', Array.isArray(arr));
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-15
      • 2018-02-22
      • 1970-01-01
      • 2016-08-31
      • 2021-08-10
      • 2014-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多