最初は traditional:true は不要かと思ったのですが、後で traditional を使わないようにしたら、バックグラウンドで selectUsers の値が取得できないことが分かりましたので、 traditional のデフォルト値が false であるのは確かです。
送信されたパラメータがArray({selectUsers:[value,value,value]})の場合、
falseの場合は送信時に「selectUsers[]=value&selectUsers[]=value」となります
名前 | ニーハオ |
リスト[] | [3] ] |
0 | x |
1 | y |
2 | z |
ckee | o |
m2[名前] | zzzzz |
m2[リスト][] | [3] ] |
0 | x1 |
1 | y1 |
2 | z1 |
m2[ckee] | o1 |
trueに設定すると、送信時に「selectUsers=value&selectUsers=value」になります
name | nihao |
リスト | [ 3] |
0 | x |
1 | y |
2 | z |
ckee | o |
m2 | [オブジェクト+オブジェクト] |
このようにして、String[] ids=request は次のことができますバックグラウンドで使用されます。 .getParameterValues("selectUsers"); 値を取得します。 公式ドキュメントでは次のように説明されています:
従来型
型: Boolean
従来の方法でデータをシリアル化する場合は、true に設定します。
従来のスタイルの param シリアル化を使用したい場合は、これを true に設定してください
frontend js
var obj2 = { "name": "nihao", "list": ["x", "y", "z"], "ckee": "o", "m2": { "name": "zzzzz", "list": ["x1", "y1", "z1"], "ckee": "o1" } } $.ajax({ type: "POST", url: "/Home/SubmitForm", data: obj2, dataType: "text", async: false, traditional: true, success: function (data) { var rows = data.rows; } }); $.ajax({ type: "POST", url: "/Home/SubmitForm", data: obj2, dataType: "text", async: false, traditional: false, success: function (data) { var rows = data.rows; } });
backend
[HttpPost] public string SubmitForm(mymode request) { if (request != null) { // } return "操作成功。"; }
以上がjquery ajaxが配列をバックグラウンドに渡すことができませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。