首页 > 解决方案 > 未在 HTMLButtonElement.onclick 中定义

问题描述

再会,

我有一个按钮

<button id="4" onclick="UpdateStatus(this.id)" class="btn btn-default" type="button">update</button>

那是调用一个ajax函数

   <script>
    $(document).ready(function () {            

        function UpdateStatus(Id) {                
            $.ajax({
                type: "Post",//or POST
                url: '/myController/UpdateSomething?Id=' + Id,
                //  (or whatever your url is)
                data: { data1: var1 },               
                success: function (responsedata) {
                    // process on data
                    alert("got response as " + "'" + responsedata + "'");
                }
            });
        }
    }
</script>

我的问题是我收到一个错误:

UpdateStatus is not defined at HTMLButtonElement.onclick

我究竟做错了什么?谢谢

更新

当我尝试运行此代码时

  @section scripts
  {   
   <script>
    $(document).ready(function () {
    //Carga datos del curso
    console.log("asdf");   
});</script>}

我没有在控制台中收到消息。

标签: asp.net-mvcasp.net-ajax

解决方案


document.ready问题是,您正在jQuery 事件中定义您的方法定义。解析和呈现按钮标记时,未定义 JavaScript 方法,因此您会收到错误消息。

jqueryready方法稍后在文档准备好时执行(HTML 的解析和呈现已经完成,可以安全访问 DOM)。至此,HTML 已经渲染完毕。

在它之外定义它。

<script>

function UpdateStatus(Id) {
   alert('UpdateStatus called');                
}
$(function () {

});

</script>

另一种选择是使用普通的 JavaScript。因此,您无需将 click 事件处理程序连接到按钮标记,而是稍后在触发 document ready 时进行连接。

<button id="4" class="btn btn-default" type="button">update</button>

并连接点击事件

$(function () {
    $("#4").click(function (e) {
        e.preventDefault();
        alert('User clicked');
    });
});

推荐阅读