我最近遇到了Jquery的麻烦。我希望能够更熟练地使用Jquerys $ .post方法创建一个登录表单,但我遇到了一些麻烦。
由于某些原因当我单击按钮提交时,我要发布的数据将被放入我当前页面的URL中。此外,Jquery仅在此数据位于url中时才起作用。
我不想在网址中向网站访问者显示他们的用户名和密码。为什么不按预期发布数据?
编辑:即使我做了所有的更改,我似乎仍然需要提交表单两次才能实际登录。
//我的请求是在哪里发出的
<script>
$( document ).ready(function() {
$( "#loginbtn" ).click(function() {
var u = $("#loginform input:text" ).val();
var p = $("#loginform input:password" ).val();
$.post( "http://www.gameandshame.com/auth/login.php", { username: u, password: p}).done(function( data ) {
//alert("Data Loaded: " + data);
location.href = "http://www.gameandshame.com/";
});
});
});
</script>
//数据发布到此处
<?php
session_start();
include_once("".$_SERVER['DOCUMENT_ROOT']."/auth/class_loader.php");
echo "STARTING LOGIN";
$login = new login();
$login = $login->startLogin($_POST['username'],$_POST['password']);
?>
//结束我的STARTLOGIN功能
$_SESSION['t'] = $t;
$_SESSION['u'] = $u;
echo "SUCCESS";
return;
//登录表单
<form method="post" id="loginform">
<table>
<tr>
<td><input name="username" type="text" maxlength="24" placeholder="Username"></td>
</tr>
<tr>
<td><input name="password" type="password" maxlength="24" placeholder="Password"></td>
</tr>
<tr>
<td><input id="loginbtn" type="submit" name="submit" value="Go!" /></td>
</tr>
</table>
</form>
老实说,我很遗憾为什么它会在URL中粘贴参数。似乎没有合理的理由,甚至更多。
注意:当我尝试登录并且所有表单数据都在URL中时,仅返回“STARTING LOGIN”。如果URL中没有数据,则甚至不会运行登录脚本。非常奇怪......:S
答案 0 :(得分:0)
我看到两个问题。
[海报添加完整代码后不再有效]检查您的javascript控制台。没有你的javascript被执行,因为你正在msising a});关闭.click。
[海报添加的HTML代码,仍然有效点但不是错误的来源]没有你的HTML,我在这里说一个猜测。但是我发现你的点击事件中没有e.preventDefault()的问题。如果您的按钮是type =“submit”,您的表单将正常提交。
包裹所有内容 $(document).ready(function(){[ALL YOUR JS CODE]}); 否则,jQuery会在DOM完全加载之前尝试附加您的click事件。
答案 1 :(得分:0)
我发现了问题。
以我的形式
<input id="loginbtn" type="submit" name="submit" value="Go!" />
当我真正需要做的是从按钮中取出提交时,只需点击即可获取表单详细信息。因为这个type="submit"
仍在那里,它正常发布表单,然后尝试再次从JS发布,结果完全搞砸了ajax请求。