我已经阅读了至少20个类似的问题,但无法弄清楚我的代码有什么问题。
我有一个登录表单,如下所示:
<div class="login-form">
<form class="login-form-container" action="./" method="post" autocomplete="off">
<input id="login-user" type="text" placeholder=" Username"/>
<input id="login-pass" type="password" placeholder=" Password"/>
<div class="login-button-container">
<input id="login-button" type="submit" value="Log in"/>
</div>
</form>
</div>
我的login.js脚本如下:
$(document).ready(function(){
$("#login-button").click(function(e){
var username = $("#login-user").val();
var password = $("#login-pass").val();
$.ajax({url: "../includes/index.php", //.js file is in a diff directory
data: {'login':true,'name':username,'pwd':password},
type: "POST",
success: function(html) {
if (html=='true') {
//window.location="dashboard.php";
alert('success');
}
else {
alert('failure');
}
}
});
return false;
});
});
这应该被发送回'index.php',它包含一个处理登录信息的单独的php文件。这样做的原因是我可以使用用户成功登录更新页面而无需刷新。
我的其他php文件只是检查帖子数据:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
var_dump($_POST);
if (isset($_POST['login']) && $_POST['login']) {
} else if (isset($_POST['reg']) && $_POST['reg']) { //this is for registration, which will be used once this login is working
} else {
echo 'Neither login/reg were set';
}
var转储显示:
array(0) { }
因此没有收到数据。但是,它明显到达了php页面。我不知道有什么不对,有什么建议吗?
编辑:我想我会补充一点,在login.js顶部用用户名/密码添加警报会打印输入的值。所以正在访问login.js,并且可以在那里访问数据。但它并没有超越它。
Edit2:这是我更新的HTML和login.js代码:
的index.php:
<form class="login-form-container" action="./" method="post" autocomplete="off">
<input id="login-user" type="text" placeholder=" Username"/>
<input id="login-pass" type="password" placeholder=" Password"/>
<div class="login-button-container">
<input id="login-button" type="button" value="Log in"/>
</div>
</form>
login.js
$(document).ready(function(){
alert(1);
$("#login-button").click(function(e){
alert(0);
//e.preventDefault();
var username = $("#login-user").val();
var password = $("#login-pass").val();
$.ajax({url: "../includes/index.php",
data: {'login':true,'name':username,'pwd':password},
type: "POST",
success: function(html) {
if (html=='true') {
//window.location="dashboard.php";
alert('success');
}
else {
alert('failure');
}
}
});
return false;
});
});
答案 0 :(得分:0)
解决方案是改变我的
$("#login-button").click(function(e){
到
$(document).on("submit",".login-form-container",function(e) {
将处理表单提交,这包括按下按钮以及按下输入(理想情况)。
现在数据正在成功发送,我可以处理实际的登录/注册SQL,所以感谢@Ashokkumar M. Prajapati帮助得出结论:.js脚本实际上并未在提交时触发(不是你们其他人没有帮助!)
答案 1 :(得分:-1)
请将type: "POST"
替换为method: "POST"
你在jquery ajax函数中提到它错了。
如果您未指定,则默认为“GET”。所以,如果你检查过$ _POST&amp; $ _GET然后你会在$ _GET中找到你的数据。
尝试var_dump($ _ REQUEST)如果它没有显示任何内容,那么你的客户端没有向服务器发送数据。
另外,检查浏览器开发者控制台的网络面板。所以,你会知道哪些数据传递给服务器。