2009-12-09 76 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); 
     } 
    }); 
    }); 
} 
相關問題