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

AJAX传递字符串至MVC控制器时参数为null问题求助

解决AJAX传参到MVC控制器为null及控制台日志问题

嘿,刚接触AJAX和MVC碰到这种问题太正常了,我来帮你一步步搞定!

一、核心问题:控制器接收参数yarp为null

你的AJAX请求里对参数做了多余的JSON序列化,导致MVC的模型绑定无法正确解析。具体调整如下:

错误原因

GET请求的参数是普通键值对字符串,不需要用JSON.stringify()包裹——你现在传递的是带双引号的字符串(比如"SEC-1000"),而控制器期望接收的是纯字符串SEC-1000,模型绑定匹配失败,所以参数为null。

修改后的AJAX代码

$('.tablecontainer').on('click', 'a.safeLink', function (e) {
    e.preventDefault();
    var yarp = $(this).attr('safesel');
    // 删掉没用的selectedSafeZZ变量
    $.ajax({
        url: '/Home/GetSafeItems',
        // 直接传递原始字符串,不要JSON序列化
        data: { yarp: yarp },
        type: "GET",
        success: function (data) {
            alert(yarp);
            // 修复控制台日志显示问题
            console.log("We WIN", data);
            // 或者转成字符串查看:console.log("We WIN " + JSON.stringify(data));
        },
        error: function (xhr) {
            alert("Boohooo");
        }
    });
})

额外验证步骤

你可以打开浏览器开发者工具(F12)的Network标签,点击链接后查看请求的URL:正常情况下应该是/Home/GetSafeItems?yarp=SEC-1000,确认参数已经拼接到URL中。

二、控制台显示"We WIN [Object object]"的问题

success回调里的data是控制器返回的JSON对象,直接用+和字符串拼接时,JS会把对象默认转为[Object object]。解决方法有两种:

  • 用逗号分隔输出,直接查看对象结构:console.log("We WIN", data);
  • 把对象转为JSON字符串:console.log("We WIN " + JSON.stringify(data));

三、控制器代码的小优化(可选)

你的控制器代码本身没问题,不过在新版本MVC中,JsonRequestBehavior.AllowGet可以省略,因为默认允许GET请求返回JSON:

[Authorize]
[HttpGet]
public ActionResult GetSafeItems(string yarp)
{
    using (CBREntities2 dc = new CBREntities2())
    {
        ViewBag.safeselected = yarp; // 这里不管yarp是否为null都可以赋值,不用判断
        var safeItem = dc.Items.Where(a => a.Safe_ID == yarp)
                               .Select(s => new {
                                   Serial_Number = s.Serial_Number,
                                   Safe_ID = s.Safe_ID,
                                   Date_of_Entry = s.Date_of_Entry,
                                   Title_subject = s.Title_subject,
                                   Document_Type = s.Document_Type,
                                   Sender_of_Originator = s.Sender_of_Originator,
                                   Reference_Number = s.Reference_Number,
                                   Protective_Marking = s.Protective_Marking,
                                   Number_recieved_produced = s.Number_recieved_produced,
                                   copy_number = s.copy_number,
                                   Status = s.Status,
                                   Same_day_Loan = s.Same_day_Loan
                               }).ToList();
        return Json(new { data = safeItem });
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:30:14