如何使用.done jquery

时间:2015-11-17 11:15:26

标签: javascript jquery html

作为标题,我在代码中使用.done,但它不起作用。

get_widget_content('advanced_search').done(function(alert(1)));

function get_widget_content(widget) {
  $.ajax({
    type: "POST",
    url: baseUrl + 'task/widget_content',
    data: "task_id=" + taskId + "&project_id=" + proId + "&widget=" + widget + "&tp_id=" + tpId,
    success: function(data) {
      $('#' + widget).html(data);
    }
  });
  return false;
}

当我跑的时候。浏览器说.done不起作用。

3 个答案:

答案 0 :(得分:3)

看看你的函数返回的内容:

function get_widget_content(widget) {
  // ...
  return false;
}

然后您尝试在返回的值上调用.done()

get_widget_content('advanced_search').done(function(alert(1)));

false是一个布尔值。它没有.done()功能。

在AJAX呼叫上调用done()

function get_widget_content(widget) {
  $.ajax({ /* ... */ }).done(function () { /* ... */ });
  return false;
}

或返回AJAX调用,然后您可以在返回值上调用.done()

get_widget_content('advanced_search').done(function() { /* ... */ }));
function get_widget_content(widget) {
  return $.ajax({ /* ... */ });
}

另外:请注意您如何调用它的拼写错误。你有这个:

function(alert(1))

这是一个语法错误。它应该是这样的:

function(){alert(1);}

答案 1 :(得分:0)

更改为

 get_widget_content('advanced_search').done(function(){alert(1)});
    function get_widget_content(widget){
        $.ajax({
                type: "POST",
                url : baseUrl+'task/widget_content',
                data: "task_id=" + taskId + "&project_id=" + proId + "&widget=" + widget + "&tp_id=" + tpId,
                success: function(data){  $('#'+widget).html(data);  }
            });
        return false;
    }

答案 2 :(得分:0)

试试这个:

get_widget_content('advanced_search');
    function get_widget_content(widget){
            $.ajax({
                            type: "POST",
                            url : baseUrl+'task/widget_content',
                            data: "task_id=" + taskId + "&project_id=" + proId + "&widget=" + widget + "&tp_id=" + tpId,
                            success: function(data){  $('#'+widget).html(data);  }
            }).done(function(alert(1)));
            return false;
    }