0

我正在尝试构建一个数据库驱动的网站,用户从下拉菜单中选择一个值并返回数据库中的一些信息。我使用 ajax 帖子,因为我不希望页面刷新:

$("#button").click(function(){ 
   var datastr = ($('#act').val());
   var datastr1 = ($('#loc').val());

   $.ajax({
      type:'POST',
      url:'activities_code.php',
      data: {datastr:datastr, datastr1:datastr1},
      success:function(response){
                $("#msg").html(response);                       
            } });});  

在 url 参数中,我有以下 php 文件(这是 php 文件的一部分):

 $query = "SELECT PK,title,Information from activities where Activities='$category'";
    $result = mysqli_query($dbcon, $query) or die('no available data');

    echo "<table>";
$num_results = 0;
$t = 0; //title counter for the id of each title
while ($row=mysqli_fetch_array($result, MYSQLI_ASSOC)) {
     // Here the columns of title and information are printed
     echo "<tr><td>";
     echo "<a href='test.php'  id=\"t\".$t onClick=\"test()\" target=\"_new\" >".$row['title']."</a>"; 
     echo "<br>";
     echo  $x = $row['PK'];
     echo "</td></tr>";


     echo "<tr><td>";
     echo $row['Information'];
     echo "</td></tr>";
// Here I sum up the number of the results
     $num_results=$num_results+1;   
     $t = $t+1;      
 }

}

如您所见,我有一个 while 循环,每次带有 id 的链接时我都会在其中回显:

"<a href='test.php'  id=\"t\".$t onClick=\"test()\" target=\"_new\" >".$row['title']."</a>";

我想要做的是稍后在我的代码中通过执行以下操作使用每个链接的此 ID:

  document.getElementById("t1").value

我的问题是,我怎样才能将此ID返回给客户端?我想我应该在成功函数中写一些东西,但我不知道是什么。如果您不理解代码的某些部分,或者我没有解释清楚,请问我。感谢:D。

这是我在成功功能中发出警报(响应)时得到的。

<!DOCTYPE HTML>




       <table id="container"><tr><td><a href='test.php' id="t0" target="_new"   class='pickanchor'>Rafting in Voidomatis</a><br>1</td></tr><tr><td>
      <img src="m.jpg" class="textwrap" height="120px" width="120px">
      <p style="text-align:left;">Our experienced rafting instructors will show you the best way to enjoy Voidomatis, the river with the most clear waters inSouth Europe. You can also cross the Vikos Gorge by following Voidomatis river in an attractive one and a half hour   long walk. Alternatively you can ask for the more demanding Aoos river rafting.</p>
     <br>
     <br>
     <hr></td></tr><tr><td><a href='test.php' id="t1" target="_new" class='pickanchor'>Rafting   in Lousios</a><br>4</td></tr><tr><td><img src="raf.jpg" class="textwrap" height="120" width="120">
     <p>You will be surprised to know that Greece hides numerous, densely vegetated rivers offering amazing rafting opportunities. In the whole mainland, there is a company base awaiting you, for an amazing � off the beaten track experience!</p>
     <br>
     <br>
     <br>
     <hr></td></tr><div id="r2" align="center" id="result_2">2 results for rafting were found!        
     </div></table>  <!-- End of PHP code-->
4

4 回答 4

1

在您提出的行中,您犯了错误。你在错误的地方添加了“。

echo "<a href='test.php'  id=\"t\".$t onClick=\"test()\" target=\"_new\" >".$row['title']."</a>";

它应该是

echo "<a href='test.php'  id=\"t".$t."\" onClick=\"test()\" target=\"_new\" >".$row['title']."</a>";

作为最简单的解决方案,您可以在 while 循环之后添加

echo "<script> my_max_id_num=$t </script>"

这将使您了解页面上存在哪些 ID。这应该使您的 js 脚本可以访问 my_max_id_num 变量。它不被认为是最佳编程实践,但很简单。

解决问题的第二种(更好)方法可能是返回 json 而不是 html 并重写您的成功方法。这将是更多的工作要做:

  1. 重写 while 循环,使其返回如下内容:

    {“数据”:[
    ...
    {“id”:“10”,“目标”:“_new”,“标题”:“one_of_your_link_titles”},
    {“id”:“10”,“目标”:“_new ", "title":"one_of_your_link_titles" },
    ...
    ]}

  2. 重写您的 ajax 查询,使其接受 json,并重写成功方法,以便它将根据从服务器返回的数据创建您的链接。

这样,您将在一个查询中同时拥有 ID 和链接。更重要的是,在需求变化的情况下,它会更容易。

于 2012-10-07T13:05:06.503 回答
1

首先,您的锚标签的 ID 存在问题。这是更正

"<a href='test.php'  id=\"t".$t."\" onClick=\"test()\" target=\"_new\" >".$row['title']."</a>";

其次,给你的桌子 id 像

<table id="container">

第三,给你的锚标签上课。

"<a href='test.php' class='pickanchor'  id=\"t.$t\" onClick=\"test()\" target=\"_new\" >".$row['title']."</a>";

现在在 .html() 语句之后将以下代码写入您的成功句柄

新编辑

$("a.pickanchor").each(function(i){

   alert(this.id);
});
于 2012-10-07T13:05:36.403 回答
0

最简单的解决方案是给你的元素一个class,这样你就不需要基于元素选择id,但你可以很容易地访问它:

例如。

<a href="#" id="t0" class="className">test 0</a>
<a href="#" id="t1" class="className">test 1</a>

$('#msg').on('click', '.className', function() {
  console.log(this.id);
});
于 2012-10-07T13:02:03.903 回答
0

我没有足够的代表点来要求澄清,但是“将此ID返回给客户端”是什么意思?还有元素“t1”的“价值”是什么?

假设您想获取链接位置,它可能类似于:

var value = $('#addButton').attr('href');

然后对这个值做一些事情(不确定你的意思是'把这个ID返回给客户端'),但也许你希望这个值对客户端可见?

因此,如果您在页面上的某个地方有一个 div,您希望它显示您可以用您的值填充它,也许是这样的:

HTML <div id="valueBox"></div>

jQuery

$("#valueBox").html(value);
于 2012-10-07T13:11:28.043 回答