如何在AJAX调用后制作smth?

时间:2013-11-19 18:13:35

标签: javascript jquery ajax callback

我有一个ajax调用,它返回一个字符串并创建一个带有字符串的<span>元素。然后我想为新创建的span添加一些类。但是由于AJAX的异步特性,在AJAX调用之前执行添加类的函数。

那么,我应该使用延期承诺吗?怎么样?

简单的小代码位于 jsFiddle < / p>

预期结果: 点击按钮获取响应,并将类添加到span

2 个答案:

答案 0 :(得分:1)

您希望将回调函数作为参数传递给get()

$('button:eq(0)').click(function () {
    get(function () {
       $('span').addClass('red');
    });
});

get()

function get(callback) {
    //more code
    .done(function (result) {
            //even more code
            callback.call();
        });
};

被拒绝的对象替代方法是从$.getJSON()返回get()承诺并在其.done回调中添加类:

function get() {
    return $.getJSON( // more code
}

$('button:eq(0)').click(function () {
    get().done(function () {
       $('span').addClass('red');
    });
});

答案 1 :(得分:0)

http://jsfiddle.net/52U3j/2/

在这里,我也修复了你的班级css。 你说:

span.red {color:green}

并且是一个错误:)

已更改为

span.red {color:red}

记住!

Ajax是一个异步调用,所以你想要执行 ONCE COMPLETED 请求的代码, CAN NOT 在调用之后,但它必须只在回调中写入一旦完成就被调用。