jquery通过ajax传递单值数组

时间:2017-01-20 17:16:37

标签: javascript jquery ajax

我已经看过很多关于如何通过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,则推入一个已知的虚拟值,以便该数组有两个值。这似乎有效 - 但这是正确的行为吗?这是最好的解决方法吗?

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,并告诉服务器您要发送的数据类型。