Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当我想使用ajax时,表单标签会做什么?_Javascript_Html_Jquery_Post - Fatal编程技术网

Javascript 当我想使用ajax时,表单标签会做什么?

Javascript 当我想使用ajax时,表单标签会做什么?,javascript,html,jquery,post,Javascript,Html,Jquery,Post,这是我的Html代码: <head> <script src="jquery.js"></script> <script type="text/javascript"> function logiin() { name_sent = document.getElementById('username').value; pass_sent = docum

这是我的Html代码:

<head>
    <script src="jquery.js"></script>

    <script type="text/javascript">
        function logiin()
        {
            name_sent = document.getElementById('username').value;
            pass_sent = document.getElementById('pass').value;
            $.post(
                'login.php',
                {
                    name: name_sent
                },
                function show(data) {alert (data); }
            );
        }
    </script>
</head>

<body>
    <!--<form>-->
        Username: <input type="username" name="username" id="username"> <br>
        Pass: <input type="password" name ="pass" id="pass"> <br>
        <input type="submit" onclick="logiin();">
    <!--</form>-->
</body>

函数login()
{
name_sent=document.getElementById('username')。值;
pass_sent=document.getElementById('pass')。值;
美元邮政(
'login.php',
{
姓名:发送的姓名
},
函数show(data){alert(data);}
);
}
用户名:
通过:

它可以与ajax和JQuery一起工作,而且工作得也很好!:)但是如果我添加表单标签,它就不起作用了!为什么?

可能是因为您正在使用类型为“提交”的输入按钮。尝试使用按钮类型的输入

<input type="button" onclick="logiin();">


类型为“提交”的按钮将自动尝试使用post提交表单。有关更多信息,请参阅。

可能是因为您正在使用类型为“提交”的输入按钮。尝试使用按钮类型的输入

<input type="button" onclick="logiin();">


类型为“提交”的按钮将自动尝试使用post提交表单。有关详细信息,请参阅。

它不起作用,因为当包含在表单中时,“提交”按钮将尝试提交表单

防止这种情况发生的最简单方法是添加
returnfalse到onclick处理程序:

<input type="submit" onclick="logiin(); return false;" />

不过,更好的方法是将处理程序添加到表单本身(如果用户以另一种方式提交表单):


它不起作用,因为当包含在表单中时,“提交”按钮将尝试提交表单

防止这种情况发生的最简单方法是添加
returnfalse到onclick处理程序:

<input type="submit" onclick="logiin(); return false;" />

不过,更好的方法是将处理程序添加到表单本身(如果用户以另一种方式提交表单):


只需禁用提交即可。如果没有类型为submit的按钮,则不会提交表单,除非您在JavaScript代码中显式提交表单

<body>
    <form>
        Username: <input type="username" name="username" id="username"> <br>
        Pass: <input type="password" name ="pass" id="pass"> <br>
        <input type="button" onclick="logiin();">
    </form>
</body>

用户名:
通过:

只需禁用提交即可。如果没有类型为submit的按钮,则不会提交表单,除非您在JavaScript代码中显式提交表单

<body>
    <form>
        Username: <input type="username" name="username" id="username"> <br>
        Pass: <input type="password" name ="pass" id="pass"> <br>
        <input type="button" onclick="logiin();">
    </form>
</body>

用户名:
通过:

内联调用处理程序不是一种好做法。是的,这也行,但是使用表单标签可以确保你不会遇到问题。@Jai-你为什么说这不是一个好的做法?在某些情况下,我宁愿看到处理程序内联,而不是分散在JavaScript代码中,我必须通过调试器找到它们。@JustinNiessner我这么说是因为他使用的是jquery,jquery提供了强大的方式来执行一些ajax调用,如单击,submit等@Jai:我也使用jQuery,但最近我又开始添加
onclick
属性。它可以非常清楚地显示哪些元素附加了事件,哪些没有,以及单击时它们会做什么。分离JS非常好,但是很难跟踪。内联调用处理程序不是一个好的做法。是的,这也行,但是使用表单标签可以确保你不会遇到问题。@Jai-你为什么说这不是一个好的做法?在某些情况下,我宁愿看到处理程序内联,而不是分散在JavaScript代码中,我必须通过调试器找到它们。@JustinNiessner我这么说是因为他使用的是jquery,jquery提供了强大的方式来执行一些ajax调用,如单击,submit等@Jai:我也使用jQuery,但最近我又开始添加
onclick
属性。它可以非常清楚地显示哪些元素附加了事件,哪些没有,以及单击时它们会做什么。分离JS很好,但是很难跟踪。或者你可以让你的
login()
函数return false,然后使用
onclick=“return login();”
@AlexW-那也行。在不确定OP是否在其他地方使用该函数的情况下,我不想更改它。此外,如果您在函数中出错,它不会返回false,您的表单将提交,从而更难找到错误,因为页面将在您看到它之前重新加载。或者您可以使
login()
函数返回false,然后使用
onclick=“return login();”
@AlexW-这也可以。在不确定OP是否在其他地方使用该函数的情况下,我不想更改它。此外,如果您在函数中出错,它不会返回false,并且您的表单将提交,这使得查找错误变得更加困难,因为页面将在您看到它之前重新加载。不理解此处的下一票。请此人澄清原因?不理解这里的否决票。请此人澄清原因?