如何将列表从一个函数追加到另一个函数

时间:2014-05-21 13:21:36

标签: javascript jquery

我正在尝试将成功处理程序中的数据列表附加到表行,例如

function Table(data) {
    var rows = '';
    rows += '<tr......>'
}

function functionTwo() {
    $.ajax({
        ..........
    success: function (data) {
        $('#tabletr:last').after(rows);
    }
});

我写了两个简单的函数,在Table()函数中,我正在构建一个通过行+ =&#39;&#39;来填充的表。如果functionTwo()成功,那么结果中的数据增益应该在行+ =&#39;&#39;之后追加。在表函数中。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

在Table函数之外全局声明行或返回这样的行并修复选择器"#table tr:last"

function Table(data) {
var rows = '';
rows += '<tr......>'
return rows;
}

 function functionTwo() {
$.ajax({
..........
success: function (data) {
$('#table tr:last').after(Table(data)); //Call table here
}
});

答案 1 :(得分:0)

你错过了空间#table tr:last

var rows = '';
     function Table(data) {
    rows = '';
    rows += '<tr......>'
}

function functionTwo() {
    $.ajax({
        ..........
    success: function (data) {
        $('#table tr:last').after(rows);
    }
});

答案 2 :(得分:0)

请记住,这是异步运行的ajax,因此您没有传统的逐步执行。但是,利用$.Deferred API和范围,您可以克服这个问题:

var rows = '';

// Build your rows
rows += '<tr>...</tr>';

// call ajax method and await successful response
$.ajax({ ... })
  .done(function(data){
    // this is where you compile both tr and data together
  })
  .fail(function(){
    // here all you have is rows since the AJAX call failed
  })
  .always(function(){
    // If you wanted output no matter what, that's what the .always callback is for.
    // It executes after the done/fail callback. So you could populate rows with either
    // the data (done) or a fallback message (fail) then actually output it here.
  });

注意:我不确定您是否打算使用AJAX结果调用Table(data),但是如果您将其置于.done()回调中(而不是填充{ {1}} AJAX调用的值头。)