Zuerst dachte ich, dass „traditional:true“ entbehrlich sei, aber später, als ich „traditionell“ nicht verwendete, stellte ich fest, dass der Wert von „selectUsers“ nicht im Hintergrund abgerufen werden konnte, daher ist es sicher, dass der Standardwert von traditionell ist falsch.
Wenn der übermittelte Parameter ein Array ist ({selectUsers:[value,value,value]}),
Wenn es falsch ist, wird es übermittelt, wenn „selectUsers[]=value&selectUsers[]=value“ ist
name | nihao |
list[] | [3] |
0 | x |
1 | y |
2 | z |
ckee | o |
m2[name] | zzzzz |
m2[list][] | [3] |
0 | x1 |
1 | y1 |
2 | z1 |
m2[ckee] | o1 |
Wenn auf „true“ gesetzt, lautet die Übermittlung „selectUsers=value&selectUsers=value“
name | nihao |
list | [3] |
0 | x |
1 | y |
2 | z |
ckee | o |
m2 | [object+Object] |
Auf diese Weise kann String[] ids=request verwendet werden im Hintergrund. getParameterValues("selectUsers"); Ruft den Wert ab.
Die offizielle Dokumentation erklärt es wie folgt:
traditionell
Typ: Boolean
Wenn Sie Daten auf traditionelle Weise serialisieren möchten, dann setzen Sie es auf true.
Setzen Sie dies auf true, wenn Sie den traditionellen Stil der Param-Serialisierung verwenden möchten
Front-End-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; } });
Backstage
[HttpPost] public string SubmitForm(mymode request) { if (request != null) { // } return "操作成功。"; }
Das obige ist der detaillierte Inhalt vonjquery ajax kann das Array nicht an den Hintergrund übergeben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!