当我使用AJAX将数组发送到控制器时,我将其转换为JSON以便于使用。
我像这样构建我的数组:
$("#selectedDropdown option").each(function () {
selectedLanguages.push($(this).val());
});
我将其字符串化为:
data["PreferredLanguages"] = $(selectedLanguages);
然而,当它到达我的控制器时,它看起来像这样:
"PreferredLanguages":{"0":"ZA","1":"CM","2":"GH","3":"ES","length":4}}
注意:它甚至看起来不像数组。
这可以防止我反序列化它。我该如何解决这个问题?
答案 0 :(得分:1)
$(selectedLanguages)
没有对您的数组进行字符串化。 $
是jQuery对象的constructor。
您可以使用global JSON
object对数组进行字符串化处理:
data["PreferredLanguages"] = JSON.stringify(selectedLanguages);
通过运行此代码段,您可以看到数组和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>