javascript - 为什么我的 responseText 不能在 if 条件下工作(在其他地方工作)?
问题描述
下面是我的 html 文件中的 Javascript。我正在使用 API 制作一个简单的登录功能。API 发布请求返回“登录通过”或“登录失败”。
myFunction3() 中的 Window.alert(datas),它返回“登录通过”正在返回“登录通过”,但是 if 条件中没有任何效果。
<script type="text/javascript">
function myFunction2(){
//grab user entered values for posting to API
uid=document.getElementById('username').value;
pass=document.getElementById('password').value;
//Generate url for Post request
var url='http://127.0.0.1:5000//login/'+uid+'/'+pass
//making Post request to API
const xhr = new XMLHttpRequest();
xhr.open("POST", url);
xhr.send();
xhr.onreadystatechange=function(){
if(xhr.readyState==4&&xhr.status==200){
if(xhr.responseText){
const data = xhr.responseText; //json returned by post request
myFunction3(data);
}
}
}
}
function myFunction3(datas){
window.alert(datas);
if(datas == "login passed"){
localStorage.setItem("user",uid);
console.log(localStorage.getItem("user"));
window.alert(localStorage.getItem("user"));
}
}
</script>
解决方案
这个问题是范围问题:
function myFunction2(){
//grab user entered values for posting to API
uid=document.getElementById('username').value;
pass=document.getElementById('password').value;
//Generate url for Post request
var url='http://127.0.0.1:5000//login/'+uid+'/'+pass
//making Post request to API
const xhr = new XMLHttpRequest();
xhr.open("POST", url);
xhr.send();
xhr.onreadystatechange=function(){
if(xhr.readyState==4&&xhr.status==200){
if(xhr.responseText){
const data = xhr.responseText; //json returned by post request
myFunction3(data);
}
}
}
// this function needs to be in scope so uid is valid
function myFunction3(datas){
window.alert(datas);
if(datas == "login passed"){
localStorage.setItem("user",uid);
console.log(localStorage.getItem("user"));
window.alert(localStorage.getItem("user"));
}
}
}
尝试将您的函数 myFunction3 移动到 myFunction2 中。您的 if 语句正在工作,问题是 uid 将不等于任何内容,因为它在全局范围内不存在。
您还可以通过在代码顶部的 myFunction2 之外的全局范围内声明 uid 来解决此问题。
var uid="unauthorized";
推荐阅读
- java - 如何缩短 xpath 元素
- java - 无法从 SOAP Web 服务打印 XML 响应
- android - android: ScrollView 切掉顶部
- python - 在 Python 中将字典转换为 DataFrame 的问题
- browserify - 如何对browserify做有条件的要求?
- javascript - 等待 Promise 的结果返回一个承诺?
- angular - 使用 mat 表单字段显示字段
- excel - 在一列中的文本字符串中查找某些文本并删除或替换为空白
- javascript - Google Maps JavaScript API 显示灰色空白框而不是地图
- c++ - 函数内部具有 int 的类的大小和具有 int 的类的大小