【问题标题】:how do i handle the requests asynchrous as this isnt working, it should be alerting with the response我如何处理异步请求,因为这不起作用,它应该通过响应发出警报
【发布时间】:2020-03-14 01:07:22
【问题描述】:
var data = new FormData();
data.append("name", nickname.value);
data.append("email", email.value);
data.append("user", user.value);
data.append("passw", passw.value);

var req = new XMLHttpRequest();
req.onreadystatechange = function() { 
    if (req.readyState == 4 && req.status == 200)
        afterSignup(req.responseText);
}
req.open("GET", server, true); // true for asynchronous 
req.send(data);

function afterSignup(req) {
    res = JSON.parse(req)["res"];
    alert(res);
}

我正在尝试异步处理请求,但我只是不知道该怎么做,这就是我目前所拥有的

【问题讨论】:

  • 这能回答你的问题吗? HTTP GET request in JavaScript?
  • “为什么我的回复是空的”——是什么让你觉得你是?您共享的代码中的任何内容都没有对可以在任何地方显示的响应做任何事情。
  • @Quentin 我编辑了问题并忘记切换标题,在我做同步和错误之前,我在参数中输入了 true 但现在我问如何做到异步
  • “不工作”是什么意思?你期望会发生什么?这与实际发生的情况有何不同?
  • @Quentin 当它调用 aftersignup 时它应该 json 解析它并警告但不警告这意味着它可能永远不会被调用

标签: javascript json xmlhttprequest


【解决方案1】:

将 async 值更改为 false 以使其同步。

req.open("POST", `${server}/signup`, false);

【讨论】:

  • 我真是个白痴……不敢相信我花了最后一个小时坚持这个。感谢兄弟的帮助,它可以工作,但是那个参数实际上是什么意思或做什么
  • 不,不要那样做.. 这是一个已弃用的功能,所以除非 OP 使用 webworker,否则它将在未来中断。
  • @Keith 那我应该改用什么
  • @RafiAsmoucha 看看我刚刚发布的骗局。
  • @Keith 我几乎没有使用过stackoverflow,所以我该如何检查
【解决方案2】:

所以很多 JavaScript 库......大大小小的......我很难建议你应该花很多时间重新发明它。

例如:https://github.com/freelancephp/simpleAjax.js

 simpleAjax.get('ajax.html', function (data) {
     alert(data);
 });

轰隆隆。完毕。完了,走吧。作者说他的库是“跨平台的”,“甚至适用于 IE7+”(yuck),并且缩小了大约 3KB。所以,“抓住它就走吧。”

(有 数百个 像这样的包...... AJAX 真的被做死了。)

【讨论】:

  • 谢谢,我还是很笨,所以这将替换我的代码的哪一部分
  • 这个库如何解决 OP 遇到的问题?
  • 哦,天哪。该库使用 eval 来处理 JSON。像瘟疫一样避免它。
猜你喜欢
  • 2020-04-05
  • 1970-01-01
  • 2015-06-20
  • 2023-03-30
  • 2020-02-24
  • 1970-01-01
  • 1970-01-01
  • 2015-12-17
  • 2012-05-14
相关资源
最近更新 更多