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

Ajax自动补全函数无法找到TextBox:Cannot read properties of null问题排查

问题分析与修复方案

你遇到的核心问题是脚本引入顺序错误,加上几个潜在配置问题,导致自动补全功能无法触发:

首要修复:调整脚本加载顺序

jQuery UI依赖jQuery核心库才能正常工作,但你现在先加载了jquery-ui.min.js,再加载jquery-3.2.1.min.js——这会导致jQuery UI找不到jQuery核心对象,autocomplete方法根本无法被识别,直接触发浏览器报错。

把脚本顺序改成这样:

<script src="vendor/jquery-3.2.1.min.js"></script>
<script src="vendor/jquery-ui.min.js"></script>

其他优化与排查点

  1. 简化元素选择逻辑
    不用手动拼接ID,直接用ASP.NET的ClientID输出,或者更稳定的类选择器:

    $(document).ready(function () {
        // 直接用ClientID生成选择器
        $('#<%= AssetName.ClientID %>').autocomplete({
            source: function (request, response) {
                // 用$(this.element)获取当前输入框的值,避免重复查找
                var param = {
                    Name: $(this.element).val()
                };
                // ... 原有AJAX代码
            },
            minLength: 1
        });
    });
    
  2. 确认后端方法配置
    你的getNames方法必须标记为[WebMethod]且是public static,否则AJAX请求会被拒绝:

    [WebMethod]
    public static List<string> getNames(string Name)
    {
        // 这里写查询用户名的逻辑
    }
    
  3. 检查资源加载状态
    打开浏览器开发者工具(F12)的「网络」标签,确认jquery-3.2.1.min.js和jquery-ui.min.js都能正常加载(没有404或加载失败的状态)。

  4. Content-Security-Policy 影响
    页面设置的upgrade-insecure-requests会把HTTP请求强制转为HTTPS,如果你的本地脚本是通过HTTP路径加载的,要确保HTTPS下能访问到这些资源,否则会导致脚本加载失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 15:42:43