Javascript 当我想使用ajax时,表单标签会做什么?
这是我的Html代码: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
<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,并且您的表单将提交,这使得查找错误变得更加困难,因为页面将在您看到它之前重新加载。不理解此处的下一票。请此人澄清原因?不理解这里的否决票。请此人澄清原因?