为什么我不能在函数后面定义=?

时间:2019-06-11 11:55:35

标签: javascript string function xmlhttprequest global-variables

我要运行的代码

<!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 =,并且可以正常工作,但是其余的代码却没有...所以有办法解决此问题吗?

我已经尝试了很多其他问题的答案,但对我没有帮助... 而且我还是个初学者,不太了解简化的答案。

所以请不要提及链接或将其标记为 复制并回答

2 个答案:

答案 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'