gpt4 book ai didi

javascript - ASYNC AJAX CALLBACK 遇到问题

转载 作者:行者123 更新时间:2023-12-02 16:37:00 24 4
gpt4 key购买 nike

SO 上大约有一百万个关于异步回调的帖子,但我不知道如何让我的回调工作

我有一个 AJAX 请求:

function checkName();
var ajax = new XMLHttpRequest();
ajax.open("POST", "index.php", true); // true = async
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

ajax.onreadystatechange = function(){
if(ajax.readyState == 4 && ajax.status == 200){
var pass = ajax.responseText + 0;
}
}

ajax.send("emailcheck="+email);

return pass;
}

pass 唯一可能的结果是 1 或 0。

我尝试在分配pass后立即移动返回值,但仍然没有任何结果。就在那时,我开始在这里四处寻找并找到了回调,但我无法弄清楚如何做到这一点。

我想做的是:

if(checkName()){
// Do stuff
}else{}

我不想执行同步 ajax 请求(即第三个参数的 false),因为这会停止我拥有的动画,并且还会阻止用户在网站上执行其他任务调用发生的时间很短。

我知道这与有关该主题的其他帖子非常相似,但我只是不太明白。

提前谢谢您。

最佳答案

只有通过同步调用才能实现此目的。没有人会想要这样。你自己也说了。

if(checkName()){ 
// Do stuff
}else{}

你确实需要使用回调函数。请参阅此示例:

function checkName(callBack) {
var ajax = new XMLHttpRequest();
ajax.open("POST", "index.php", true); // true = async

if (callBack)
{
ajax.callBack = callBack;
}
ajax.onreadystatechange = function(){
if(this.readyState == 4 && this.status == 200){
if (this.callBack)
{
this.callBack(this.responseText);
}
}
}

ajax.send("emailcheck="+email);

}

function checkNameFinish(data)
{
alert(data);
}

checkName(checkNameFinish);

checkName 现在接受参数 callBack。这必须是一个函数。当就绪状态完成时,它会检查是否设置了callBack。如果是这样,则执行callBack函数并将响应作为参数传递。

关于javascript - ASYNC AJAX CALLBACK 遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27849151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com