当前位置: 首页 > 面试题库 >

Ajax完成后获取变量

顾高翰
2023-03-14
问题内容

我有以下代码可以向服务器发出请求:

function myAjaxCheck(token) {
        $.ajax({
            type: 'POST',
            url: 'auth.php',
            data: {
                token: token,
            },
            dataType: 'json',
            success: function (data) {
                if (data.auth == 'OK') {
                    alert ('ok');
                    }
                } else {
                    alert('Error: ' + data.auth);
                }
            }
        }).done(function (data) {
            return data;
        });
    }

因此,我需要将返回的数据传递给一个像这样的变量:

Var MyVariable = myAjaxCheck(token);
console.log(MyVariable);

在控制台上:

未定义

问题出在哪里,应该在完成后返回数据,但不是。


问题答案:

默认情况下,ajax()请求是异步的,因此ajax()通常会在请求完成之前返回对的调用。您可以改用回调函数。

function myAjaxCheck(token, callback) {
        $.ajax({
            type: 'POST',
            url: 'auth.php',
            data: {
                token: token,
            },
            dataType: 'json',
            success: function (data) {
                if (data.auth == 'OK') {
                    alert ('ok');
                    }
                } else {
                    alert('Error: ' + data.auth);
                }

                callback(data);
            }
        });
    }

var myVariable; 
 myAajxCheck(token, function(returnedData){ //anonymous callback function
    myVariable = returnedData;
    console.log(myVariable);
 });

如果绝对必要,则可以async: false在中调用ajax()



 类似资料:
  • 问题内容: 我知道我可以打电话获取最新的Jenkins版本的状态。但是,由于我们的构建运行了很长时间(几个小时),所以我对最后一个 完整的 构建状态确实比在 此刻 正在 运行 的运行更感兴趣。 最后一个完全运行的构建是否有api端点?还是我应该拉动构建的完整列表并从那里选择倒数第二个? 问题答案: 尝试http:// $ host / job / $ jobname / lastSuccessfu

  • 我在本地运行一个项目,并监视该想法的内存。exe保留 作业完成。Java语言exe已从列表中删除。内存并没有变小,intellij的速度很慢,在重启之前有点无响应 然后当我再次跑步时,它会再次发生 知道吗?

  • 问题内容: 我有一个简单的ajax(jQuery版本)脚本和一个非常短的php函数,它们工作正常而没有问题。当我从表单输入are中提交值时,ajax会发送并从php脚本中获取结果,在这种情况下,该ajax可以获取预定的总金额。Ajax脚本和html部分如下: 以下用作xml的php脚本也可以与上述ajax请求一起正常工作: 但是,当我将上述脚本与购物车的foreach循环结合使用时,它不起作用,并

  • 问题内容: 为什么每当我将ajax放入for循环中时,它都无法很好地同步? 例如,我的代码是: 为什么它先调用Ajax查询?是否有可能让ajax查询在继续之前完成?因为它在完成填充之前就清除了数组。:/ 问题答案: 首先,您确实需要了解Ajax调用是如何异步的(这就是Ajax中的“ A”所代表的意思)。这意味着调用仅启动ajax调用(它将请求发送到服务器),其余代码愉快地继续运行。有时,在其余代码

  • 问题内容: (做了很多修改,因为它是类的一部分,等等。) 目前,这有点让人讨厌,因为计时器的使用似乎很垃圾。我会使用$ .when和$ .done,但是我不知道可能有多少房间,所以我不知道什么时候放什么。 如何确保仅在所有AJAX请求返回后才调用run_the_rest_of_the_app()? 问题答案: 在进行AJAX调用之前, 完成AJAX调用后(在回调中):

  • 问题内容: 我的问题是我需要知道何时在页面上完成AJAX。我需要在我通过pageMod加载的contentScriptFile中知道这一点。我的插件需要在每次修改页面时运行:因此基本上是在加载页面时以及每次有AJAX调用时运行。 我尝试了这个: 但它不起作用。 有没有办法做到这一点? 编辑:来自main.js的我的页面mod代码: 问题答案: 不要将其放在内容脚本中:我不确定如何识别脚本的内容窗口