2017-05-14 54 views
0

当我使用AJAX将我的数组发送到我的控制器时,我将其转换为JSON以便于使用。JSON.Stringify包含索引和数组长度

我建我的数组是这样的:

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

我字符串化是这样的:

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

然而,当它到达我的控制器,它似乎是这样的:

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

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

这可以防止我反序列化它。我如何解决这个问题?

回答

0

$(selectedLanguages)不会将您的数组串起来。 $是针对jQuery对象的constructor

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

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>

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

可以通过运行这个片段看到一个数组和jQuery对象之间的差异

相关问题