jquery ajax .done函数不起作用

时间:2015-01-27 16:49:57

标签: javascript php jquery ajax

我使用以下代码将html动态加载到codeigniter视图中:

               $.ajax({
                        type:"POST",
                        url: "Ajax/getHtml",
                        data: { u : contents },
                        dataType: 'html',       
                        success: function(data) {
                            html = data;
                        },

                        error: function(jqXHR, textStatus, errorThrown) {
                                console.log('error');
                                console.log(jqXHR,textStatus, errorThrown);
                        },
                        done: function(){
                                console.log(' here is the html ', html);
                        }
                    });

我可以看到html正在firebug中正确返回。但是'done'功能没有执行。我做错了什么?

3 个答案:

答案 0 :(得分:3)

你应该.done喜欢这个

$.ajax({
    type: "POST",
    url: "Ajax/getHtml",
    data: {
        u: contents
    },
    dataType: 'html',
    error: function(jqXHR, textStatus, errorThrown) {
        console.log('error');
        console.log(jqXHR, textStatus, errorThrown);
    }
}).done(function(html) {
   console.log(' here is the html ' + html);
});

答案 1 :(得分:1)

通常设计错误同时拥有success处理程序和.done承诺处理程序,特别是后者不属于在$.ajax调用中 - 它从AJAX调用的返回值中链接:

现代模式是:

$.ajax({
    type: "POST",
    url: "Ajax/getHtml",
    data: {
        u: contents
    },
    dataType: 'html'
}).done(function(html) {   // nb: data is passed here
   console.log('here is the html:' + html);
}).fail(function(jqXHR, textStatus, errorThrown) {
   //...
});

答案 2 :(得分:-2)

    $.ajax({
       url: "test.html",
       context: document.body
    }).done(function() {
    $( this ).addClass( "done" );
    });

您错过了"。"已完成

http://api.jquery.com/jquery.ajax/