2013-06-24 32 views
3

我有一个下拉选择PHP页面,使用jQuery,AJAX和MySQL在选择器被改变,产生一个表,并放到一个div叫.mytable内任何链接的选择。表中的一些数据是影响表中数据的php脚本的链接,所以我想刷新表而无需重新加载。什么是表

我知道我需要一个事件监听器安装在表中的链接要做到这一点,但我似乎无法得到正确的选择到听者重视?

任何帮助,将不胜感激

用户看到的页面,被称为user.php的是:

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Document</title> 
<link href="css/table_style.css" rel="stylesheet" type="text/css"> 
</head> 



<body> 
<form name="form1" method="post" action=""> 
    <label for="select_data"></label> 
    <select name="select_data" id="select_data"> 
    <option value=1>"Apples"</option> 
    <option value=2>"Pears"</option> 
    <option value=3>"Bananas"</option> 
    </select> 
</form> 

<div id="mytable">This is where the table goes</div> 


<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> 
<script src="get_table.js"></script> 
</body> 
</html> 

jQuery的事件处理程序是:

$(document).ready(function(){ 
    //listen for select list to change, pass fruit into create_table.php, pass data into mytable div 
    $('#select_data').change(function() { 
     $.post('create_table.php',{fruit: fruit}, function(data) { 
      $('div#mytable').html(data);});  

    }); 

    $('.fruit_link').change(function() { 
     $.post('create_table.php',{fruit: fruit}, function(data) { 
      $('div#mytable').html(data);});  

    }); 

}); 

的脚本事件创建表并返回html代码的句柄调用是:

<?php 

require_once('Connections/dbc.php'); 
$fruit=$_POST['fruit']; 
$sql="SELECT * FROM q_fruit WHERE FruitID =".$fruit; 
$rec1=mysqli_query($dbc,$sql); 

    echo '<table class="table" align="center">'; 
    echo '<th class="th" width="80px">Fruit ID</th>'; 
    echo '<th class="th" width="150px">Fruit Name</th>'; 
    echo '<th class="th" width="40px">Fruit Action 1</th>'; 
    echo '<th class="th" width="150px">Fruit Action 2</th>'; 

    while ($row=mysqli_fetch_array($rec1)) 
     { 

      echo '<tr class="tr">'; 
      echo '<td class="td">'.$row['FruitID']. '</td>';  
      echo '<td class="td">'.$row['FruitName']. '</td>'; 
      echo '<td class="td"><a class="fruit_link" href="fruitaction1.php">'.$row['FruitID']. '</a></td>'; 
      echo '<td class="td"><a class="fruit_link" href="fruitaction2.php">'.$row['FruitID']. '</a></td>'; 
      echo '</tr>'; 
     } 

    echo '</table>'; 


    mysqli_free_result($rec1); 
    mysqli_close($dbc); 

?> 

所以,选择事件处理程序的每一次的值发生改变时再现表,但链接的处理程序是没有的,我假定它是因为链接是在HTML多数民众赞成在返回的,而不是已经存在java正在监听的用户文件。有没有办法解决这个问题?

+1

'$( 'MyTable表TR TD一')。点击(函数(){})'应该这样做 – asprin

+0

在这里发表您尝试过的代码。 –

+0

这可以很容易地通过不要使用AJAX和检查这个http://stackoverflow.com/questions/5681380/refresh-a-table-with-jquery-ajax-ever-5-seconds – user2504141

回答

2

我不确定,如果这很简单,就像$("table a"),但它看起来像这样...这将选择所有表中的所有a(nchor)。

如果你想只在表中选择它们,然后$("div.mytable table a"),如果称为指一类,但如果它是一个ID(它确实具有点开始),然后$("#.mytable table a")

+0

感谢您的答复 – user2391089

+0

我明白了这背后的原则,但我遇到的问题是完整的表格html被回显到PHP脚本中的div。所以表中的链接不被监听器捕获。但是脚本中已有的链接正在被捕获 – user2391089

+0

目标是在组合框更改值时使用jquery创建表,并使用组合中的值作为sql查询的一部分。生成的表格将在数据单元中有链接,点击时这些链接应该执行后台php脚本或函数来更改数据库并刷新表格而不导航离开页面。 – user2391089