1

我有一个自动建议文本框,女巫使用带有函数的 onclick 事件生成 li 标签,但我必须将 php 变量作为参数传递给函数,但我只想要用户单击的 li 的变量值,现在我总是得到循环中的最后一个变量。我希望 var 测试是 $test = $row['t_product']; 的值 用户点击的 li

这是我现在使用的代码:

    if(isset($_POST['search_term']) == true && empty($_POST['search_term']) == false){    
    $search_term = $_POST['search_term'];
     $customerid = $_SESSION['userdata']['t_customer_id'];

 $conn = connect();
$sql = "SELECT * FROM Licenses WHERE customer_id = '$customerid' AND t_name LIKE '$search_term%'";
$query = sqlsrv_query($conn, $sql);

while(($row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)) != false){
$test = $row['t_product'];
?>
<script type="text/javascript">
 var test = <?php echo json_encode($test); ?>;
</script>
<?php
        echo '<li onclick="show(test)">', $row['t_name'], '</li>';
         }

}

我希望我能很好地解释我的问题,并希望一些衰弱可以帮助我:)

4

2 回答 2

1

好吧,也许你应该这样做:

while(($row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)) != false){
  $test = $row['t_product'];
?>
<?php
  echo '<li onclick="show("'.$test.'")">', $row['t_name'], '</li>';
}

或者

if(isset($_POST['search_term']) == true && empty($_POST['search_term']) == false){ 
  $index = 0;
  $search_term = $_POST['search_term'];
  $customerid = $_SESSION['userdata']['t_customer_id'];

  $conn = connect();
  $sql = "SELECT * FROM Licenses WHERE customer_id = '$customerid' AND t_name LIKE '$search_term%'";
  $query = sqlsrv_query($conn, $sql);

  while(($row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)) != false){
    $test = $row['t_product'];
?>
    <script type="text/javascript">
      var test<?php echo $index++ ?> = "<?php echo $test; ?>";
    </script>
<?php
    echo '<li onclick="show(test'.$index++.')">', $row['t_name'], '</li>';
  }
}

编辑:删除 json_encode 并用引号替换它

于 2012-11-26T12:47:47.310 回答
0

通过将 $test 值作为 id 传递给每个 li 并在 js 中获取它来解决它

 $test = $row['t_product'];
    echo '<li onclick="show(this)" id="'.$test.'">', $row['t_name'], '</li>'

function show(id){
    alert($(id).attr("id"));}
于 2012-11-26T15:46:18.243 回答