带参数的jquery回调

时间:2011-07-23 11:30:36

标签: jquery

我正在尝试调用函数,然后获取返回的变量并将其显示在div中的屏幕上。但是,在我下面的当前格式中,.html()作为postGameStatistics()函数同时执行。 postGameStatistics()是一个在其他一些动作中执行ajax帖子的函数。有没有办法把这个链接起来?

        var fbDiv = "#fb-request-wrapper";
        var xp = postGameStatistics(fbDiv, "#loading_fb", "p2", null);
        $(fbDiv).html("Congrats! you've just earned " + xp + " XPs.");
        $(fbDiv).show();

干杯,

迪安

3 个答案:

答案 0 :(得分:2)

两个选项。我认为第二个就是你想要的。

1)将jQuery ajax请求的可选“async”属性设置为false。这将使脚本的其余部分等到请求完成后再继续。例如:

$.ajax({
    url: http://example.com,
    type: 'POST',
    async: false,
    data: myData,
    success: function(data){
        //handle a successful request
    },
    error: function(data){
        //handle a failed request
    }
});

2)在$ .ajax方法的“success”回调中执行第二行代码。这是处理AJAX请求的标准jQuery方法。请注意,在这种情况下,您不需要将async设置为false:

$.ajax({
    url: http://example.com,
    type: 'POST',
    data: myData,
    success: function(data){
        $(fbDiv).html("Congrats! you've just earned " + data + " XPs.");
        $(fbDiv).show();
    },
    error: function(data){
        //handle a failed request
    }
});

答案 1 :(得分:0)

您可以将$(fbDiv).html()$(fbDiv).show()移动到回调函数中,该函数在ajax请求成功完成后调用。

所以你的请求看起来像是:

var postGameStatistics = function(div) {
    var $div = $(div);
    $.get('get/xp', {some: "parameters"}, function(response) {
        var xp = response.xp;

        $div.html("Congrats! you've just earned " + xp + " XPs.");
        $div.show();
    });
};

答案 2 :(得分:0)

使用jQuery你可以使用ajax()函数进行ajax调用。要实现您想要的,请考虑在ajax()函数下使用success()或cemplete()方法。在success()方法中,您可以填充并显示您的DIV元素。

更多内容可以在这里阅读:http://api.jquery.com/jQuery.ajax/

EDIT。

一个小例子


$.ajax({
  url: 'http://example.com/something',
  action: 'post',
  success: function( data ) {
    $(fbDiv).html("Congrats! you've just earned " + xp + " XPs.");
    $(fbDiv).show();
  }
});