2011-12-03 40 views
0

我想在ajax请求完成并且成功得到响应时初始化jquery函数。因为想获得一个表作为Ajax响应,并使用数据表jQuery插件girds如何初始化ajax请求的成功jquery函数?

函数初始化这样

$(document).ready(function() { 
$('#data_grid').dataTable(); 
    }); 

功能,这将在阿贾克斯成功触发梳理出来的网格响应

function showgValid() 
{ 
    if(xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") 
    {document.getElementById('loadingImg').style.display='none'; 
    data =xmlHttp.responseText; 

    document.getElementById("genPay").innerHTML=data; 

    } 
} 

在Ajax响应的成功,genPay的innerHTML的股利将成为这个responseText, 响应文本将是一个id data_table的表。

AJAX请求将被发送,并得到了以下文件:

<? 

require_once '../config.php'; 

$db = $_GET['db']; 

$table = $_GET['table']; 

$_SESSION['table']=$table; 

?> 
<html> 
    <head> 
     <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
     <style type="text/css" title="currentStyle"> 
      @import "demo_page.css"; 
      @import "demo_table.css"; 
     </style> 

     <script type="text/javascript" language="javascript" src="jquery.js"></script> 
     <script type="text/javascript" language="javascript" src="jquery.dataTables.js"></script> 
     <script language ="javascript" src="js/abtAjax.js" type="text/javascript"></script> 
     <script type="text/javascript" src="js/ajax.js"></script> 
     <script type="text/javascript" charset="utf-8"> 
      $(document).ready(function() { 
       $('#data_grid').dataTable(); 
      }); 



     </script> 
    </head> 
    <body id="dt_example"> 
     <div id="container"> 






<table cellpadding="0" cellspacing="0" border="0" class="display" id="data_grid"> 

    <thead><? 
    if ($line == 0) 
    { 

?> 
<tr> 
    <?php 
    $sql=mysql_query("show columns from $table"); 
    while($res = mysql_fetch_row($sql)) 
    { 
    echo "<th bgcolor='".(($line % 2) ==0 ? '#efefef' : '#ffffff' )."'>$res[0]</td>"; 

    } 
    ?> 
</tr> 
<? 
} 
$line++; 
?> 
</thead> 
    <tbody> 
     <?php 
$result = mysql_query("select * from $table"); 
$num_rows = mysql_num_rows($result); 

while ($get_info = mysql_fetch_object($result)){ 
print "<tr>"; 
foreach ($get_info as $field) 
print "<td>$field</td>"; 
print "</tr>"; 
} 

?> 
    </tbody> 
<? 
print "</table>"; 
?> 


      <div class="spacer"></div> 






     </div> 
    </body> 
</html> 

的问题是,我没有得到的电网上午期待。我认为这个函数并没有初始化ajax请求的成功。请纠正我摆脱这个问题

回答

3

$(document).ready()不会在您的ajax调用后触发。它仅在页面首次加载时触发。如果你想在你的ajax调用之后调用$('#data_grid').dataTable();,那么只需从ajax调用的成功处理程序调用它。

function showgValid() 
{ 
    if(xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") 
    { 
     document.getElementById('loadingImg').style.display='none'; 
     data =xmlHttp.responseText; 

     document.getElementById("genPay").innerHTML=data; 

     // ADD THIS LINE to your ajax success handler 
     $('#data_grid').dataTable(); 
    } 
} 
+0

我会尝试这个:) –

+0

它的工作jfriend :)非常感谢..! –

1

我相信这是你在找什么:

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

jQuery API refference

相关问题