オブジェクトを として呼び出しに渡すdata
とajax
、予期しない結果が得られます。何らかの理由で、値が配列の場合、jQuery はパラメーター名に角かっこを追加しています。例えば...
var obj =
{
name: "John Doe",
courses: [ 1, 2, 4 ]
};
...name=John+Doe&courses[]=1&courses[]=2&courses[]=4
の代わりになりname=John+Doe&courses=1&courses=2&courses=4
ます。
jQueryが角括弧を追加するのはなぜですか?
これが実際の例です:http://jsfiddle.net/BrHSy/
アップデート:
上記の例では、次の例のクエリ文字列に似た文字列が生成されると思います。
<html>
<head></head>
<body>
<form method="GET">
<input type="hidden" name="name" value="John Doe"/>
<input type="hidden" name="courses" value="1"/>
<input type="hidden" name="courses" value="2"/>
<input type="hidden" name="courses" value="4"/>
<button>Go!</button>
</form>
</body>
</html>
フォーム (www-form-urlencoded) によって生成されるクエリ文字列には角括弧がないことに注意してください。