2017-05-14 58 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對象之間的差異

相關問題