2017-05-14 7 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を使用することができます。

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>

関連する問題