【问题标题】:javascript method not found 'Method Name' is undefined找不到javascript方法“方法名称”未定义
【发布时间】:2011-08-06 05:59:36
【问题描述】:

我在点击<img> 标签时实现了一个简单的JQuery.GetJSON 方法。问题是 Internet Explorer 抛出方法名未定义的异常。

谁能指导我。

HTML:

<div class="itemgenerate">
    <img src="/images/generate.png" onclick="sendJSONRequest()" style="cursor: pointer;" />
</div>
<div id="divTarget" class="itemtext">
    <p id="pStuff"></p>
</div>

Java 脚本:

<script language="javascript" type="text/javascript" src="/Scripts/jquery-1.4.1.js" />
<script language="javascript" type="text/javascript">
    function sendJSONRequest() {
        $.getJSON("/Home/Generate", $('#text1').val(), function (data) {
            $('#pStuff').text(data.Stuff);
        });
    }
</script>

如果有人可以解释一下这里出了什么问题,请:

【问题讨论】:

  • 试试onClick="javascript:sendJSONRequest();"
  • 我试过调试javascript,它指向&lt;img&gt;标签的行

标签: javascript jquery asp.net-mvc-2 onclick image


【解决方案1】:

script 标签不能自动关闭。你需要一个结束 script 标签:

<script language="javascript" type="text/javascript" src="/Scripts/jquery-1.4.1.js"></script>

您当前的语法意味着第一个脚本标签不会被关闭,其内容将被视为第一个标签的一部分。由于第一个标签有一个src 属性,它的内容将被忽略,所以你的函数不会被定义。

【讨论】:

  • 我已经看到加载了jquery。使用这个&lt;body onload="if (jQuery) alert('Success'); else alert('Failure'); 并且结果是成功,尽管在 XHTML 的情况下你是对的,但是大多数浏览器都支持以这种方式完成标记...
  • 由于上述答案,问题已解决。虽然jQuery在启动时加载成功,但不知道为什么? :(
  • @Naveed From MDC:“必须同时具有开始标签和结束标签”。我的答案是错误的:jQuery 加载,但标签的内容没有。
  • 您能否强调一下为什么匿名方法中的代码没有触发。即,$('#pStuff').text(data.Stuff); 这行永远不会执行...
  • @Naveed 因为如果脚本标签具有src 属性,则不会执行脚本标签内的代码。由于您的第一个标签永远不会关闭,因此第二个标签的内容被视为该标签的一部分。该标签中的任何内容都不会被执行。
【解决方案2】:

在标签中使用onclick=不是JQuery方式;使用 JQuery 的要点之一是允许您将脚本代码从 HTML 标记中抽象出来。所以你会改用这样的东西:

$(document).ready() {
    $('#myimage').click(sendJSONRequest);
}

【讨论】:

  • @lonesomeday - 你是对的,不是对实际问题的回答。不过,信息太多,无法放入评论中。也就是说,如果问题出在他所说的&lt;img&gt; 标签中,那么改用这种技术可能会解决问题。
猜你喜欢
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多