我要运行的代码
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var http = new XMLHttpRequest();
var params = 'frashnum=&action=login&Frm_Logintoken="+results+"&Username=admin&Password=test';
var url = 'http://page/';
http.open('POST', url, true);
//Send the proper header information along with the request
http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
http.onload = function () {
let str = (http.responseText);
alert(str)
let pattern =/\bgetObj\("Frm_Logintoken"\)\.value = "([^"]+)";/;
let results = console.log(str.match(pattern)[1]);
return results;
}
console.log(results);
http.send(params);
</script>
</body>
</html>
我正在尝试从参数中返回结果变量以在Frm_Logintoken中使用它,但是它说结果未定义。显然是在哪里定义的...所以我试图在等价之前删除等号
功能,该部分也可以使用http.onload =,并且可以正常工作,但是其余的代码却没有...所以有办法解决此问题吗?
我已经尝试了很多其他问题的答案,但对我没有帮助... 而且我还是个初学者,不太了解简化的答案。
所以请不要提及链接或将其标记为 复制并回答
答案 0 :(得分:0)
了解javascript的异步行为。在收到api调用的响应之前,将调用您的console.log(results)部分。选中How do I return the response from an asynchronous call?
答案 1 :(得分:0)
一种快速解决方案正在更改
AttributeError: 'Rolling' object has no attribute '_stat_axis_number'
到 http.open('POST',url,false);
使请求同步。
而不是http.open('POST', url, true);
添加结果1 =结果;
然后
return results;
应该工作..如果不添加,只需添加
console.log(results1);
代码开头
因此完整的代码应如下所示
var results1;
并且参数中的结果应该在撇号中而不是双引号中,因此它看起来应该像是'results1'