1

AJAXonchangeリクエストの結果が入力されたテーブルがあります。mouseoverすべてが完全に機能しますが、window.load にロードされ、mouseout、 、 などに基づいてテーブルを変更する JS スクリプトも含まれていますonclick。テーブルに AJAX リクエストを入力し、window.load を実行する代わりに、AJAX リクエストの完了中または完了後に JS スクリプトをロードする方法はありますか? 以下は私のコードです:

<link href="<?php echo $this->config->item('base_url'); ?>/css/table_design.css" 
      rel="stylesheet" type="text/css" media="screen" />
    
// This is the script that is included, and inside the script
//the main function is started by window.load
<script type="text/javascript" 
    src="<?php echo $this->config->item('base_url'); ?>/js/table_design.js"></script>
    
<br />
                
<script type="text/javascript">
    function showUser(str) {
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
        }
        else {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function()   {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)   {
                document.getElementById("tars").innerHTML=xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET","jqueryDB/catSelector?cat="+str,true);
        xmlhttp.send();
}
</script>

<span id="tars"></span>

これは、AJAX を介して要求された私の PHP ページです。

public function catSelector()
{
    $catID = $_GET['cat'];  
    $query = $this->db->query('SELECT * FROM upload WHERE category = '.$catID);
    $num_rows = $query->num_rows();
    $val = $query->result_array();   
            
    echo '<table cellspacing="0" cellpadding="0">
        <tr>
        <th width="50%">File Name:</th>
        <th width="30%">File Size:</th>
        <th>Download Link:</th>
    </tr>';
        
    $c = true;
    foreach($val as $files){
        
         if ($files['size'] >= 1000000000) {
             $files['size'] = round( ($files['size'] / 1000000000) , 2).' GB';
        }
        
        if ($files['size'] >= 1000000) {
            $files['size'] = round( ($files['size'] / 1000000) , 2).' MB';
        }else{
            $files['size'] = round( ($files['size'] / 1000) , 2).' KB';
        }
                
        echo '<tr'.(($c = !$c)?' class="odd"':'').">
            <td>$files[name]</td>
            <td>$files[size]</td>
            <td><a href='$files[location]' >Download</a></td>
        </tr>";
    }
        
    echo '</table>';
}
4

2 に答える 2

1

私は使ったことはありませんXMLHttpRequestが、読んだ後、次のようにできると思います:

function showUser(str)  {
    ...
    xmlhttp.open("GET","jqueryDB/catSelector?cat=" + str, true);
    xmlhttp.onload = function() { //add click events to table elements (same function you calling now with `window.load` };
    xmlhttp.send();
}
于 2012-08-19T18:09:24.977 に答える
0

ウィンドウロード時に実行しているjsスクリプトを送っていただけますか?また、以下に示すようにスクリプトを呼び出してみてください:-

xmlhttp.onreadystatechange=function()  
                      if (xmlhttp.readyState==4 && xmlhttp.status==200)
                        document.getElementById("tars").innerHTML=xmlhttp.responseText;
// call the js script here example test();
于 2012-08-19T18:11:52.247 に答える