0

我正在尝试在 Web 应用程序上运行 Ajax,该应用程序假设使用 jQuery 和 PHP 从 MySQL 数据库中列出与 HTML 列表相关的数据。我在 MySQL 数据库中有两个名为 Item 和 Items 的表,如下所示:

在此处输入图像描述

我必须将 PHP 文件称为 index.php 和 result.php 作为:================================== ================================= index.php

<html>
<head></head>
<body>
 <?php
  $mysqli = new mysqli('localhost', 'root', '', 'testdb');
   if ($mysqli->connect_errno) 
   {
     die('Unable to connect!');
   }
  else{
$query = 'SELECT * FROM items';
if ($result = $mysqli->query($query)) 
{
    if ($result->num_rows > 0) 
    {
    ?>  
        <p>
            Select a language
            <ul id="item">
      <?php     
while($row = $result->fetch_assoc()){
?>      
<li><div id="selectLanguage"><?php echo $row['item']; ?></div></li>     
<?php           
        }
 ?>
            </ul>
    </p>
    <p id="result"></p>
  <?php
    }
    else 
    {
        echo 'No records found!';
    }
    $result->close();
}
else 
{
    echo 'Error in query: $query. '.$mysqli->error;
}
    }
    $mysqli->close();
    ?>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"     type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function()
        {
            $('#selectLanguage').click(function()
            {
            alert("hello");
                if($(this).val() == '') return;
                $.get(
                    'results.php',
                    { id : $(this).val() },
                    function(data)
                    {
                        $('#result').html(data);
                    }
                );
            });
        });
    </script>
</body>
</html>

结果.php是============================================= =========================== result.php

<?php
$mysqli = new mysqli('localhost', 'root', '', 'testdb');
$resultStr = '';
 $query = 'SELECT type FROM item where name='.$_GET['item'];
 if ($result = $mysqli->query($query)) 
 {
if ($result->num_rows > 0) 
{
    $resultStr.='<ul>';
    while($row = $result->fetch_assoc())
    {
        $resultStr.= '<li><strong>'.$row['id'].'</strong> - '.$row['type'];
    '</li>';
    }
    $resultStr.= '</ul>';
}
else
{
    $resultStr = 'Nothing found';
}
     }
    echo $resultStr;
    ?>

现在第一部分(index.php)正在根据项目表呈现列表,但我无法单击第二个或第三个项目,除了它们都没有向页面返回任何值。你能告诉我我在这里做错了什么吗?

4

2 回答 2

0

将您的 index.php 文件更改为:

<html>
<head></head>
<body>
   <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"     type="text/javascript"></script>
 <?php
  $mysqli = new mysqli('localhost', 'root', '', 'testdb');
   if ($mysqli->connect_errno) 
   {
     die('Unable to connect!');
   }
  else{
$query = 'SELECT * FROM items';
if ($result = $mysqli->query($query)) 
{
    if ($result->num_rows > 0) 
    {
    ?>  
        <p>
            Select a language
            <ul id="item">
      <?php     
while($row = $result->fetch_assoc()){
?>      
<li><div id="selectLanguage<?php echo $row['id']; ?>"><?php echo $row['item']; ?></div></li>


   <script type="text/javascript">
        $(document).ready(function()
        {
            $('#selectLanguage<?php echo $row['id']; ?>').click(function()
            {
            //alert("hello");

                $.ajax({
                      type : 'POST',
                      url : 'result.php',

                     data: {
                     id : <?php echo $row['id']; ?>
                       },
                      success : function(data){

                         $('#result').html(data);
}

                });


            });
        });
    </script>

<?php           
        }
 ?>
            </ul>
    </p>
    <p id="result"></p>
  <?php
    }
    else 
    {
        echo 'No records found!';
    }
    $result->close();
}
else 
{
    echo 'Error in query: $query. '.$mysqli->error;
}
    }
    $mysqli->close();
    ?>


</body>
</html>
于 2012-11-07T21:07:35.133 回答
0

您正在多次创建 selectLanguage div id。您应该使用类而不是 id。还。val() 为空。您应该改用 html() 。

看起来在 result.php 中,当您在 jquery ajax 函数中将参数作为“id”传递时,您正在通过参数“item”填充列表

改变其中之一,你应该很好。

于 2012-11-07T20:21:29.497 回答