繁体   English   中英

如何初始化ajax请求的onSuccess的jQuery函数?

[英]How to initialize a jquery function onSuccess of ajax request?

我想在ajax请求完成并成功获得响应时初始化一个jQuery函数。 因为我正在尝试使用ajax响应获取表并使用数据表jquery插件为网格将其排序为网格

该函数以这种方式初始化

$(document).ready(function() {
$('#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;

    }
}

成功执行ajax响应后,genPay div的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请求成功时初始化的。 请纠正我摆脱这个问题

$(document).ready()在您的Ajax调用后不会触发。 仅在首次加载页面时触发。 如果你想要$('#data_grid').dataTable(); 在您的ajax调用之后被调用,然后只需从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();
    }
}

我相信这就是您要寻找的:

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

jQuery API参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM