【问题标题】:Javascript If else statement not working with JSONJavascript If else 语句不适用于 JSON
【发布时间】:2016-04-20 10:20:05
【问题描述】:

我有以下代码。所以基本上JavaScript需要查看用户名和密码并通过API(有效)检查并返回true或false。真让用户访问下一页,假重新加载登录页面。

除了 JavaScript if 语句外,一切都运行良好。
我的代码如下:

var ApiKey = '';  //generated API Key
var userPass = document.getElementById('pass');  //gets the password
var userName = document.getElementById('usr');   //gets the username

function testAJAX(){
$.getJSON("http://mywebsitesapiaddress.com/api" + ApiKey +"&user="+ userName.value + "&pass=" + userPass.value, function(data) {
    if (data.success == "true") {
        window.location = "mainpage.html";
    }
    else {
      location.reload();
    }
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<input type="text" name="username" id="usr" placeholder="Enter your username">
<input type="password" name="password" id="pass" placeholder="Enter your password">
<button onclick="testAJAX()" id ="login">Login</button>  

【问题讨论】:

  • 试试if (data.success == true) { 或只是if (data.success) {
  • 您的回应是什么?你试过if (data.success){}else{}if (data.success==true){}else{}
  • 不相关,但是是什么阻止了某人检查您的来源并手动转到 mainpage.html - 您是否也在该页面上进行了服务器端检查?
  • 向我们展示返回的 JSON,特别是包含 "success":"true" 的 JSON。
  • if(data.success == true ){

标签: javascript jquery json api rest


【解决方案1】:

当 JSON 数据为真或假时。不能使用双引号。

感谢您的快速回复。原来问题是数据类型发生冲突,我将 API 响应更改为 1 和 0,这似乎解决了问题。使用数字时更简单、更灵活。

var ApiKey = '';  //generated API Key
var userPass = document.getElementById('pass');  //gets the password
var userName = document.getElementById('usr');   //gets the username

function testAJAX(){
$.getJSON("http://mywebsitesapiaddress.com/api" + ApiKey +"&user="+ userName.value + "&pass=" + userPass.value, function(data) {
    if (data.success == 1) {
        window.location = "mainpage.html";
    }
    else {
      location.reload();
    }
});
}

【讨论】:

  • 这实际上并不能回答您提出的问题。
  • 改编了答案@spender
【解决方案2】:

您的代码看起来不错,除了 success 属性值的类型。

可能是服务器没有返回字符串文字 'true' 而是布尔值 true 所以

if (data.success) { //or data.success === true
  window.location = "mainpage.html";
} else {
  location.reload();
}

【讨论】:

  • 加上JS强制,"false"不真实吗?这可能是一个危险的修复。
  • @spender 取决于 api,如果我们知道返回值的类型,那么使用它是安全的,恕我直言
猜你喜欢
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 2021-09-11
  • 2016-06-21
  • 2021-08-26
相关资源
最近更新 更多