我已经看过很多关于如何通过jquery中的ajax传递数组的帖子。这不完全是关于这些问题。以下是合理的行为还是我做错了什么?
我有一些简单的jquery ......
var changedIds = new Array();
...
changedIds.push(123);
...
$.post({
url: url,
data: {
ids: changedIds
},
dataType: "json",
traditional: true
}).done(function(ajaxData, textStatus, jqXhr) {
window.location.reload();
}).fail(function(jqXhr, textStatus, errorThrown) {
console.log("Submit Fail: ");
});
changedIds
数组最终会有0-N整数。我在POST之前检查.length
,因此不会发送零长度数组。我的问题是当只有一个值时会发生什么。
看来,使用单个值数组会处理"数组"像一个普通的变量。 HTTP请求将数据列为:
ids=123
此ajax调用的目标是需要数组值的.Net ActionResult
方法。如果它被传递给看似普通变量的东西,它就会噘嘴并抛出异常。
我已经开始检查数组.length
,如果它是1,则推入一个已知的虚拟值,以便该数组有两个值。这似乎有效 - 但这是正确的行为吗?这是最好的解决方法吗?
答案 0 :(得分:1)
尝试使用contentType
序列化您的数据参数,并指定application/json
var changedIds = new Array();
...
changedIds.push(123);
...
$.post({
url: url,
data: JSON.stringify({
ids: changedIds
}),
contentType: "application/json",
dataType: "json",
traditional: true
}).done(function(ajaxData, textStatus, jqXhr) {
window.location.reload();
}).fail(function(jqXhr, textStatus, errorThrown) {
console.log("Submit Fail: ");
});
,如下所示:
CIRCLE
这应该将JavaScript对象转换为有效的JSON,并告诉服务器您要发送的数据类型。