将函数结果保存到变量中

时间:2009-12-09 19:40:09

标签: php jquery function

我有这个函数,它从数据库中加载一个select。

function Competition() {
    $(document).ready(function() {
        $.ajax({
            url: "load-comp.php",
            cache: false,
            success : function(html) {
                // something here
            }
        });
        EditRow();
    });
}

我需要将select设置在confirmEdit中(在第二个td中)。

EditRow() {
    var confirmEdit = '<tr class="editable" id=" '+ id +' ">
                         <td><input type="text" value="' + name + '" /></td>
                         <td> ' + /* function result goes here */ + ' </td>
                         <td><input type="text" value="' + data + '" /></td>
                         <td>' + saveCancel + '</td>
                       </tr>';
}

那么如何在变量中保存由Competition()函数生成的结果,以便我可以在EditRow()函数中使用它?

3 个答案:

答案 0 :(得分:4)

function Competition() {
    $(document).ready(function() {
        $.ajax({
                url: "load-comp.php",
                cache: false,
                success : function(html) {
                    EditRow(html);
                }
            });
    });
}

Ryan的评论是正确的。在原始的EditRow中,可以在检索load-comp.php之前调用它。

答案 1 :(得分:3)

您的数据来自变量名称“html”中的load-comp.php。因此,您可以修改EditRow函数并将其传递给“html”变量(您可能还需要其他变量)

function EditRow(html, id, name, data, saveCancel) {
var confirmEdit = '<tr class="editable" id=" '+ id +' ">
                         <td><input type="text" value="' + name + '" /></td>
                         <td> ' + html + ' </td>
                         <td><input type="text" value="' + data + '" /></td>
                         <td>' + saveCancel + '</td>
                       </tr>';

}

答案 2 :(得分:1)

根据定义,Ajax是异步的。在Ajax调用完成之前,可能会调用EditRow。为什么不在Ajax调用的成功函数中调用EditRow?这是唯一可以保证只在完成Ajax后调用函数的方法。完成后,您只需将结果作为参数传递给EditRow函数。

EditRow更改为:

function EditRow(html) {
  var confirmEdit = '<tr class="editable" id=" '+ id +' ">'+
    '<td><input type="text" value="' + name + '" /></td>'+
    '<td> ' + html + ' </td>'+
    '<td><input type="text" value="' + data + '" /></td>'+
    '<td>' + saveCancel + '</td>'+
    '</tr>';
}

然后将ready功能更改为:

function Competition() {
  $(document).ready(function() {
    $.ajax({
      url: "load-comp.php",
      cache: false,
      success : function(html) {
        EditRow(html);
      }
    });
  });
}