You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Ajax向控制器传递多数组时出现Uncaught TypeError错误

问题解决步骤

1. 修复数组填充的错误代码

你在example_append函数里的dayids.push($(this).attr(day));是错误的:

  • 你已经通过var day = $(questionid).find('option:selected').attr('id');拿到了选中选项的ID值,直接把day推入数组即可,不需要用$(this).attr(day)(这里的$(this)上下文不对,且day是属性值而非属性名,会导致推入undefined)。
    修改后:
dayids.push(day);

2. 修正AJAX配置的两个问题

(1)参数拼写错误

ajaxasync是拼写错误,正确的参数名是async。

(2)添加数组序列化配置

当传递多个数组到MVC控制器时,需要开启traditional: true,让jQuery用传统方式序列化数组,否则MVC无法正确绑定数组参数,同时会触发Illegal invocation错误。

修改后的ap函数:

function ap() {
    $.ajax({
        type: "post",
        url: '@Url.Action("SelectAnswer", "Reservations")',
        async: true,
        traditional: true,
        data: { day: dayids, fromdate: fromdateids, todate: todateids },
        success: function (data) {
            // 可添加成功后的处理逻辑
        },
        error: function (data) {
            // 可添加错误提示逻辑
        }
    });
}

3. 验证全局数组的正确性

每次调用example_append后,可在控制台打印数组确认有效值:

console.log(dayids, fromdateids, todateids);

确保三个数组长度一致,且每个元素都不为空或undefined。

控制器代码无需修改

你的控制器方法SelectAnswer参数定义正确,只要前端参数格式正确,就能正常接收。


内容的提问来源于stack exchange,提问作者and waojd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 19:45:56