当我使用AJAX将数组发送到控制器时,为了便于使用,我将其转换为JSON。
我这样构建我的数组:
$("#selectedDropdown option").each(function () {
selectedLanguages.push($(this).val());
});我把它串成这样:
data["PreferredLanguages"] = $(selectedLanguages);然而,当它到达我的控制器时,它看起来是这样的:
"PreferredLanguages":{"0":"ZA","1":"CM","2":"GH","3":"ES","length":4}} 注意:它看起来甚至不像一个数组。
这会阻止我对其进行反序列化。我如何解决这个问题?
发布于 2017-05-14 21:37:24
$(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>
https://stackoverflow.com/questions/43964403
复制相似问题