相关疑难解决方法(0)

如何从异步调用返回响应?

我有一个foo发出Ajax请求的函数.我怎样才能从中回复foo

我尝试从success回调中返回值,并将响应分配给函数内部的局部变量并返回该变量,但这些方法都没有实际返回响应.

function foo() {
    var result;

    $.ajax({
        url: '...',
        success: function(response) {
            result = response;
            // return response; // <- I tried that one as well
        }
    });

    return result;
}

var result = foo(); // It always ends up being `undefined`.
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery asynchronous xmlhttprequest

5208
推荐指数
38
解决办法
134万
查看次数

jQuery.when理解

我试图使用jQuery.when两个ajax请求,然后在两个请求完成后调用一些函数.这是我的代码:

var count = 0;
var dfr;

var showData = function(data) {
    dfr.resolve();
    alert(count);
   // Do something with my data data received
};

var method1 = function() {
    dfr = $.Deferred();

    return $.ajax('localhost/MyDataService/DataMethod_ReturnsData', {
        dataType: "jsonp",
        jsonp: "$callback",
        success: showData
    });
};

var method2 = function() {
    return $.ajax('localhost/MyDataService/DataMethod_ReturnsCount', {
        dataType: "jsonp",
        jsonp: "$callback",
        success: function(data) {
            count = data.d.__count;
        }
    });
};

$.when(method1(), method2())
    .then(showData());
Run Code Online (Sandbox Code Playgroud)

但是这没有按预期工作.Ajax调用method1将返回要使用的数据,showData()并且Ajax调用method2将返回计数,该计数将分配给var count并稍后用于showData(). …

ajax jquery jquery-deferred

57
推荐指数
2
解决办法
8万
查看次数

jQuery.when()似乎没有等待

当用户在DOM中执行某些操作时,我需要进行服务器端调用(单击复选框,选择下拉列表等.这是一系列事件:

  1. 用户点击复选框(或其他内容)
  2. 微调器淡入,UI变得不可用
  3. 进行服务器端调用,并获取一些JSON
  4. UI中的标签使用JSON中的值进行更新
  5. 微调器淡出,UI再次可用

我遇到的问题是4和5经常被反转,并且在标签更新之前,微调器有时会消失2或3秒.

我正在尝试使用.when()来确保没有发生这种情况,但我似乎没有做得对.我一直在看这个帖子,这个和jquery自己的文档.

这就是我现在所处的位置......

function UpdateCampaign() {
    $('#overlay').fadeIn();
    $.when(SaveCampaign()).done(function () {
        $('#overlay').fadeOut();
    });
}

function SaveCampaign() {
    var formData =
        .... // get some data
    $.ajax({
        url: '/xxxx/xxxx/SaveCampaign',
        type: 'GET',
        dataType: 'json', 
        data: { FormData: formData },
        success: function (data) {
            var obj = $.parseJSON(data);
            .... // update a label, set some hidden inputs, etc.
        },
        error: function (e) {
            console.log(e)
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

一切正常.执行服务器端方法,返回并解析正确的JSON,并按预期更新标签.

我只需要那个dang微调器等待并淡出,直到标签更新为止.

javascript jquery json

3
推荐指数
1
解决办法
256
查看次数