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

等待jQuery $ .get函数完成,然后再运行代码

通建安
2023-03-14
问题内容

在下面,该return语句在调用完成 之前 被执行$.get()。我该如何更改?

var aft = {};

aft.getToken = function (url) {

    var theToken;

    //Get the token value
    $.get(url, function (data) {

        theToken = $(data).find('input[name=__RequestVerificationToken]').val();

    }, "html");

    return theToken;

};

问题答案:

您不能-至少不明智。虽然async可以在jQuery ajax请求上设置一个属性,但过去在尝试将其与值一起使用时遇到了
严重的问题false

尝试重新考虑您要完成的工作:

var aft = { yourToken: '' };

aft.setToken = function (url, callback) {
    $.get(url, function (data) {
        this.yourToken = $(data).find('input[name=__RequestVerificationToken]').val();

        if (callback)
           callback.apply(this);
    }, "html");
};

然后:

aft.setToken("url.php", function() {
   alert("Token retrieved = " + this.yourToken);
});

或者,如果您的回调 需要访问返回的数据,那么您可以更简单地执行

if (callback)
    callback(data);

然后

aft.setToken("url.php", function(dataReturned) {
   alert("Ajax data retrieved = " + dataReturned);
});


 类似资料:
  • 问题内容: 我正在尝试为UIImageView设置动画,然后在动画完成后隐藏图像视图。但是,在动画完成之前imageview被隐藏了。我看过类似的问题,他们建议在完成后在动画代码中实现动画侦听器或执行.hidden代码,但是我不确定如何在下面的shockView()函数中影响此效果。 仅在动画完成后,如何显示摇动动画并隐藏图像视图? 使用以下代码调用动画: 动画功能本身如下所示: 问题答案: 动画

  • 问题内容: 我有一个带有主标签页活动的Android应用程序,并且在单个标签页内有多个活动。在我的主要活动的onCreate()中,我有一个可运行的内容,它创建了一个列表,而在各个活动中,我都使用了此列表。 在各个活动的onCreate()中,我还具有在列表上运行的Runnable。但是,我需要这些Runnable仅在主选项卡活动的Runnable完成创建列表时才运行,否则我将得到一个空列表。我正

  • 我执行一些由点击按钮触发的操作: 因此,基本上我只是隐藏一些< code >视图并显示一些其他视图,我的< code>EditText使用一组简单的< code >动画来“滑出”。 当操作被取消时,我会反转过程: 我想做的是将动画(反方向)应用于我的,因此它也会随着幻灯片动画消失。问题是所有代码都立即执行,因此在其动画完成之前就消失了。我尝试了一些奇怪的事情,比如使用并将动画放在方法中,在中设置的

  • 问题内容: 我看过许多使用这种语法的示例,但是看不到我做错了什么。“ then”函数在ajax调用返回之前正在运行。 我也尝试过使用$ .deferred和其他一些模式无济于事。 有人可以看到我所缺少的吗? 我已经调试,可以看到在ajax调用返回其成功(或错误)数据之前,已完成/然后内部进行的调用。 谢谢你的帮助。 主要电话: 它正在调用以下ajax函数: 谢谢! 验尸: 除了将返回值添加到aja

  • 问题内容: 我的document.ready()中有一些ajax调用 喜欢 : 我如何强制它等待,直到我们从ajax请求获得所有回叫之前不继续? 问题答案: 我根本不喜欢任何答案,最好的方法(自Jquery 1.5+起)是使用Deferred对象,这些是操纵异步调用的对象,可以解决: 这样,myFunc会在执行2个ajax调用之后执行,如果其中一个出错,则执行myFailure。 您可以在jque

  • 到目前为止,我做到了: 我的Ajax1函数返回ajax对象。我的等待函数看起来像这样: 问题是第二个ajax请求函数(Ajax2)并没有等待等待函数!编辑:我也试过: 什么也没变。从jQuery文档: 在将多个延迟对象传递给jQuery.when的情况下,该方法将从新的“master”返回promise“延迟对象,跟踪已传递的所有延迟的聚合状态。当所有延迟被解决时,该方法将立即解决其主延迟,或者当