第一次点击#submit-login按钮时。 ajax调用成功。但是,在第二次单击同一个按钮时,我遇到了错误: 未捕获的TypeError:userLogin不是函数
HTML:
<input id="username" type="username" name="" placeholder="Username">
<input id="password" type="password" name="" placeholder="Password"><br>
<button type="button" class="btn btn-primary" id="submit-login"> Login</button>
链接到HTML页面的JS文件
$("#submit-login").on("click", function(){
userLogin();
});
function userLogin(){
userLogin = $("#username").val();
userPass = $("#password").val();
$.ajax({
type: 'POST',
url: 'controllers/login.php',
data: {
'username': userLogin,
'password' : userPass
},
success: function(responseText) {
console.log(responseText);
}
});
};
PHP文件
<?php
$savedUser = "irexjr";
$savedPass = "1234";
$request_user = $_POST['username'];
$request_password = $_POST['password'];
$loginsuccess = "";
if(($request_user == $savedUser) && ($request_password == $savedPass)){
echo 1;
}
else{
echo 0;
}
?>
答案 0 :(得分:1)
尝试以下,变量定义是在全局范围内创建的,并且在注释中指出它与函数具有相同的名称,并且它们似乎不是必需的。
function userLogin(){
$.ajax({
type: 'POST',
url: 'controllers/login.php',
data: {
'username': $("#username").val(),
'password' : $("#password").val()
},
success: function(responseText) {
console.log(responseText);
}
});
};
答案 1 :(得分:1)
其他评论员试图告诉您的是以下内容:
您在全局范围内声明函数userLogin()
。现在运行该函数并在函数体内部声明另一个变量userLogin
而不使用var,let或const导致变量最终在全局范围内覆盖已存在的变量 - &gt;功能。所以你有几个选择:
在任何情况下:永远不要声明没有var,let或const的变量。否则它们将最终进入全球范围,导致可能难以追踪的错误。
答案 2 :(得分:0)
函数userLogin()创建一个具有相同名称的全局变量。在调用userLogin()之后,它不再是函数而是字符串(用户名)
由@Andreas发布
更改了要解决的功能名称。