-2

每当触发 jQuery 时,我都会收到错误500 Internal Server Error,有没有人知道为什么下面的代码可能会导致这种情况?

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script src="../meta/js/jquery-1.7.2.js"></script>
<script>

    $(document).ready(function() {
        $('#form1').submit(function(e){
            e.preventDefault();
            alert('I clicked it');
        });
    });

</script>
</head>
<body>

<form name="form1" method="post">
    <button id="button">grab user data</button>
    <select></select>
</form>

</body>
</html>
4

5 回答 5

3

我猜是因为这个变量:

<%=button.ClientID %>

没有其他任何东西(显示)可以表示任何其他会引发错误的东西。

你能澄清'jQuery被触发'的意思吗?这是否意味着“点击”?或者只是加载这个页面(我假设是后者)

于 2012-04-25T20:30:39.873 回答
1

我猜想这行给出了错误:

$('#<%=button.ClientID %>')

硬编码一个值并测试它:

$('#buttonID')
于 2012-04-25T20:33:03.647 回答
0

您的按钮位于带有 action="" 的标签内。这将导致回发到“/”。如果您的服务器无法正确处理此问题,您将收到内部服务器错误。

如果您只想显示警报,您可以在 jQuery 事件对象上调用 preventDefault。请参阅下面的示例:

$(document).ready(function() {
     $('#<%=button.ClientID %>').click( function(e) {
        e.preventDefault();
        alert("i clicked it");
     });
});

编辑: 忘记我上面写的。它不起作用。相反,使用表单上的提交事件。像这样:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <script src="@{'/public/javascripts/jquery-1.6.4.min.js'}" type="text/javascript" charset="${_response_encoding}"></script>
    <script>
        $(document).ready(function() {
            $('#form1').submit(function(e){
                e.preventDefault();
                alert('I clicked it');
            });
        });


    </script>
</head>
<body>

<form id="form1" method="post" action="">
    <button id="button">grab user data</button>
    <select></select>
</form>

</body>
</html>
于 2012-04-25T20:35:24.287 回答
0

为了实现你想要的,这将完成这项工作:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
    $(document).ready(function() {
         $('#myButton').on('click',function(){
            alert("i clicked it");
          });
    });
</script>
</head>
<body>
    <button id="myButton">Click Me!</button>
</body>
</html>

$(document).ready用于在您的页面被渲染后执行您的代码,然后$('myButton')将获取任何具有 id 为“myButton”的元素,然后您将使用方法“on”来附加您想要的任何事件,在这种情况下,您将要选择“点击”事件,那么您应该提供一个匿名函数,您将在其中放置您想要在该操作上执行的代码。

于 2012-04-25T20:43:44.787 回答
-1

您将submit事件附加到,#form1但您的表单没有 ID,只有名称。您必须按名称选择表单,$("form[name='form1']")或者给它一个 id id="form1"

于 2015-11-18T13:50:09.527 回答