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

调用函数时出现Uncaught ReferenceError:SaveProgrammeData未定义求助

解决Uncaught ReferenceError: SaveProgrammeData is not defined的问题

咱们一步步排查这个问题,先从代码里的几个关键错误点入手:

1. 脚本语法错误导致函数未正确注册

这是最可能触发“函数未定义”的原因——你的脚本里存在几处语法/拼写错误,会导致浏览器解析脚本失败,函数根本没被成功定义:

  • AJAX参数拼写错误:contextType 应该改成 contentType,Success 要改成 success(jQuery的AJAX回调函数名是小写的,大写会被识别为无效参数,进而导致脚本执行异常)
  • 字符串拼接语法错误:success回调里的HTML拼接拆成了多段,正确写法应该把所有内容放在一个字符串里
  • 空选择器无效:$("").val(); 是空选择器,根本取不到下拉框的值,要改成对应select的选择器(ASP.NET Core会给asp-for="SubjectAreas"的元素生成id为SubjectAreas的属性,所以用$("#SubjectAreas"))

2. 脚本加载顺序的小问题

你的<script>标签写在了按钮元素的前面,虽然理论上全局函数能被后续元素调用,但如果页面有其他脚本(比如_FormScripts partial里的代码)干扰,或者浏览器解析顺序的小问题,最好把脚本移到所有DOM元素的后面(比如</body>标签前),确保函数定义在按钮元素加载完成之后。

修正后的完整代码示例

<sims-partial name="_FormScripts"></sims-partial>
<div>
  <select asp-for="SubjectAreas" asp-items="Model.SubjectAreas">
  </select>
  <p><a class="btn btn-default" onclick='SaveProgrammeData()'>Save</a></p>
</div>
<div>
  <table id="overview" class="table">
    <tr>
      <th>SubjectAreas</th>
    </tr>
  </table>
</div>
<script>
function SaveProgrammeData() {
  var subjectArea = $("#SubjectAreas").val();
  $.ajax({
    type: "POST",
    url: "ProgrammeMarketing/SaveProgrammeData",
    data: JSON.stringify({ 
      SubjectArea: subjectArea
    }),
    contentType: "application/json",
    success: function (result) {
      $("#overview").append("<tr><td>" + result.SubjectArea + "</td></tr>");
    }
  });
}
</script>

总结一下,核心问题是脚本里的语法错误导致函数没被正确注册,修正这些错误后,再调整脚本位置确保加载顺序合理,就能解决“函数未定义”的报错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:40:31