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

使用jQuery Ajax调用WebMethod提示‘PassDataToServer未定义’问题

解决jQuery Ajax调用WebMethod时的'PassDataToServer' is not defined错误

我来帮你搞定这个问题!你遇到的错误核心是URL拼接时的变量引用错误,再加上参数格式的小问题,调整这几点就能正常工作了:

错误原因分析

你在jQuery Ajax的url里写了document.URL + "/" + PassDataToServer,这里的PassDataToServer被当作一个JavaScript变量,但你并没有定义过这个变量——它其实是后台C# WebMethod的名称,应该作为字符串来拼接。

另外,你手动给参数加单引号的方式会导致JSON格式错误,后台无法正确解析参数。

修正步骤及代码

1. 修正URL拼接

把方法名直接作为字符串拼到URL后,比如:

url: document.URL + "/PassDataToServer"

2. 正确序列化参数

用JSON.stringify()来生成符合要求的JSON参数,不要手动拼接字符串:

data: JSON.stringify({ id: id, clientData: inputData })

3. 处理ASP.NET的返回结果

ASP.NET的WebMethod会把返回值包裹在d属性里,所以success回调里要取result.d才能拿到真正的返回内容。

完整修正后的jQuery代码

function PassInputDataToServer(id, inputData) {
    $.ajax({
        type: "POST",
        url: document.URL + "/PassDataToServer",
        data: JSON.stringify({ id: id, clientData: inputData }),
        contentType: 'application/json; charset=utf-8',
        dataType: "json",
        success: function (result) {
            // 取ASP.NET封装的d属性值
            transferStatus.push(result.d);
        },
        error: function (xhr, status, error) {
            transferStatus.push("failed");
            console.error("请求失败详情:", error);
        },
        complete: function () {
            transfersCompleted++;
        }
    });
}

额外注意事项

确保你的ASPX页面里已经启用了PageMethods,也就是ScriptManager要设置EnablePageMethods="True":

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True"></asp:ScriptManager>

这是后台WebMethod能被前端Ajax访问到的必要配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:38:44