如果语句不起作用 - JavaScript
if statement not working - javascript
我无法识别此JavaScript代码中的问题。我在某些逻辑上从服务器返回代码 154、155 和 1。这些数字是返回的,但如果语句返回的值在 if 语句中为 true,则它无法正常工作,它仍然运行else
(默认值)。不知道为什么它无法检查值是否相同。
`$("#btnlogin").click(function (){
// Create our XMLHttpRequest object
var hr = new XMLHttpRequest();
// Create some variables we need to send to our PHP file
var url = "phpfiles/login.php";
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var vars = "username="+username+"&password="+password;
hr.open("POST", url, true);
// Set content type header information for sending url encoded variables in the request
hr.setRequestHeader("Content-type", "plain/text");
// Access the onreadystatechange event for the XMLHttpRequest object
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
if (return_data == "154"){
$.Notification.notify('error','top left', 'Wrong Information', 'Username/Password is incorrect');
}else if (return_data=== "155")
{
$.Notification.notify('error','top left', 'User Does not exist', 'This user Does not exist. Please Check and try again.');
}
else if (return_data == "1")
{
$.Notification.notify('success','top left', 'Success', '');
GenToken();
}else{
alert();
}
};
};
// Send the data to PHP now... and wait for response to update the status div
hr.send(vars); // Actually execute the request
});`
无论条件是真是还是假,它总是归结为别的。它指向此代码
`<?php
if(isset($_POST['username']))
{
$username = FILTER_INPUT(INPUT_POST, "username", FILTER_SANITIZE_STRING);
$password = FILTER_INPUT(INPUT_POST, "password", FILTER_SANITIZE_STRING);
require_once("../class/class.login.php");
$lh = new LoginHander;
$lh->LogUserIn($username, $password, 'admin');
}
?>`
这是调用这个函数
` public function LogUserIn($username, $password)
{
$username = $this->es($username);
$password = $this->es($password);
$ip = $this->getClientIP();
$sql = "SELECT username, password FROM admin WHERE username = ?";
try{
$query = $this->con->prepare($sql);
$query->execute(array($username));
$result = $query->fetchall(PDO::FETCH_ASSOC);
} catch (Exception $e) {
$this->error($e->getMessage());
}
$this->addlog($username, $ip);
if(count($result) > 0)
{
header("Content-type: plain/text");
$pass = $result[0]['password'];
if(password_verify($password, $pass)){
$this->SetVars($username);
echo "1";
}else{
echo "154";
exit();
}
}
else
{
echo "155";
exit();
}
}`
我不知道我尝试过的问题在哪里,===
而不是==
但它没有帮助。请告诉我我在哪里犯了错误。提前谢谢你
Javascript 可以在浏览器中调试。每当观察到条件未正确计算时,最好使用调试器进行检查。
return_data == "154"
是一项非严格检查,即使它们的类型不同,也会进行评估以true
。 154 == "154"
true
.另一方面
return_data=== "155"
是一个严格的比较。 155 === "155"
是false
.
return_data == "1"
是另一个非严格比较。
通常,这些错误发生在对相似但不相同的值进行严格比较的情况,或者可以在值的开头或结尾找到白色字符的情况。原来是这样的。
相关文章:
- 幻灯片滚动javascript不起作用
- 当我在浏览器中打开HTML文件时,javascript不起作用
- 来自MDN的循环示例的JavaScript不起作用
- 在IE中切换javascript不起作用的复选框
- 在SVG中创建带有外来对象的文本区域的Javascript不起作用
- 寻呼<李>javascript不起作用
- 想制作一个基于URL的音频播放器,但Javascript不起作用
- 从Android设备浏览时Javascript不起作用
- 在 Javascript 不起作用的情况下为数字添加逗号
- 获取PHP变量的JavaScript不起作用
- 有些JavaScript不起作用
- 保存HTML文件后,Javascript不起作用
- onClick javascript不起作用
- 在Wicket ModalWindow中使用Panel时,HTML中的Javascript不起作用
- Jquery顶部的两行Javascript不起作用
- 当我通过Node服务器提供HTML时,为什么我的页面Javascript不起作用
- Javascript不起作用,但当放置断点并从chrome调试器工具中单击文件时,它可以正常工作
- 为不同的屏幕分辨率加载css样式的Javascript不起作用
- 在IE9中javascript不起作用,但在打开控制台后它就起作用了
- 为什么Javascript不起作用