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

ASP.NET Core MVC结合ADO.NET实现jQuery Ajax自动补全失效如何解决

    1. 前端选择器错误
      你脚本中第一行的$("txtSearch")是标签选择器,会匹配<txtSearch>标签,而你要选id为txtSearch的输入框,必须修改为$("#txtSearch"),这是高频错误点。
    1. 前端JS语法错误
      你贴出的JS代码最后多了一个多余的闭合括号),会导致整个脚本执行失败,删除多余的括号即可。
    1. 参数绑定不匹配
      你当前AJAX设置了contentType: "application/json; charset=utf-8",传递的是JSON格式请求体,ASP.NET Core默认不会将JSON请求体的数据绑定到简单类型参数,你需要给控制器方法的参数加[FromBody]特性,修改为:
    public JsonResult GetProductDetailsById([FromBody] String prefix)
    
    更简单的方案是直接去掉AJAX中的contentType配置,将data改为普通对象格式:data: {prefix: request.term},这样走表单格式提交,不需要加[FromBody]就能正常绑定。
    1. POST请求缺少防伪令牌
      ASP.NET Core默认开启POST请求的防伪令牌校验,你的AJAX请求没有携带令牌会返回400错误,两种解决方法:
    2. 给控制器方法添加[HttpPost]和[IgnoreAntiforgeryToken]特性,跳过校验(适合内部系统调试阶段)
    3. 在页面中加入@Html.AntiForgeryToken(),然后AJAX的请求头中添加令牌:
    headers: {
        "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val()
    }
    
    1. 返回数据格式不符合jQuery Autocomplete要求
      jQuery Autocomplete默认接收的数组元素需要包含label(展示文本)和value(选中后填入输入框的文本)属性,你select事件中取的是i.item.val,如果你的ProductMaster类没有val属性,就会取不到值。你可以修改后台返回逻辑,构造符合要求的返回结构:
    return Json(ObjProduct.Select(p => new {
        label = p.你要展示的字段名, // 比如商品名称ProductName
        val = p.你要填入输入框的字段名
    }));
    
    1. 依赖引入缺失
      确认你已经按顺序引入了jQuery库、jQuery UI的JS和CSS文件,缺少依赖的话autocomplete方法不存在,浏览器控制台会抛出未定义错误。
    1. 路由地址错误
      你写的固定路径/ProductSearchDisplay/GetProductDetailsById/可能和实际路由不匹配,你可以打开浏览器F12控制台的网络标签,看请求是否返回404,如果是,建议改用Razor的Url辅助方法生成正确地址:
    url: '@Url.Action("GetProductDetailsById", "ProductSearchDisplay")'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:54:03