2009-12-09 79 views
0

我有这个函数,它从数据库加载一个选择。将函数结果保存到变量中

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

我需要把该选择内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()函数中使用它?

+1

如果我正确认识你,为什么你不只是从成功里调用EditRow() ajax调用的一部分并通过html? – Ryan 2009-12-09 19:42:51

回答

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

莱恩的评论是正确的。在你的原始EditRow可能会在load-comp.php被检索之前被调用。

+0

感谢您的帮助! – Norbert 2009-12-09 21:54:02

3

您的数据来自load-comp.php,其变量名称为“html”。所以,你可以修改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>'; 

} 
1

根据定义,Ajax是异步的。在您的Ajax调用完成之前可能会调用EditRow。为什么不把呼叫EditRow放入Ajax调用的成功函数中?这是唯一的方法,你可以保证这个函数只在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); 
     } 
    }); 
    }); 
} 
相关问题