我知道这是一个流行的话题,我已经尝试了所有我能找到的解决方案,但都无济于事。我已使用此问题包含的所有解决方案:Pass a List from javascript to controller 。我已经将我的测试简化得非常简单。我进入 Controller ,但我的 Controller 输入参数是 {int[0]}。我确认我的数组数据在 JavaScript 和 ajax 调用中看起来不错。
谁能告诉我我错过了什么?
JavaScript 代码
var selectedIds = [];
selectedIds.push(565);
selectedIds.push(573);
selectedIds.push(571);
// selectedIds = [565, 573, 571]
$.ajax({
type: "POST",
traditional: true,
dataType: "json",
data: { "ids": JSON.stringify(selectedIds) },
//data: { "ids": selectedIds},
//data: { ids: selectedIds},
url: "api/services/getbuildingsbyid",
success: function (result) {
return result;
}
});
Controller 代码
[HttpPost]
public bool GetBuildingsById(int[] ids)
{
var lookAtIds = ids; // {int[0]}
return true;
}
最佳答案
通过使用 JSON.stringify(selectedIds)
,您可以将 int
数组转换为该数组的字符串表示形式。
AJAX POST 最终如下所示:
{ "ids": "[565, 573, 571]" }
而不是
{ "ids": [565, 573, 571] }
如果您只使用数据变量,应该可以解决问题:
data: { "ids": selectedIds },
编辑-
向后看,通过为数据设置变量,我们可以看到以下内容:
var data = {"ids": JSON.stringify(selectedIds)}
typeof(data["ids"]) // string
data["ids"][0] // '['
data = {"ids": selectedIds}
typeof(data["ids"]) // object
data["ids"][0] // 565
关于javascript - 将数字数组从 ajax 传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45247464/