0

jQueryとPHPを使用してMySQLデータベースからHTMLリストに関連付けられたデータを一覧表示することを想定しているWebアプリケーションでAjaxを実行しようとしています.MySQLデータベースには、以下のようにItemとItemsという2つのテーブルがあります。

ここに画像の説明を入力してください

そして、index.phpとresult.phpという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>

そしてresult.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)はアイテムテーブルに基づいてリストをレンダリングしていますが、2番目または3番目のアイテムをクリックできません。ただし、ページに値を返さないアイテムはありません。ここで私が間違っていることを教えていただけますか?

4

2 に答える 2

0

selectLanguagedividを複数回作成しています。IDの代わりにクラスを使用する必要があります。また。val()はnullです。代わりにhtml()を使用する必要があります。

result.phpでは、jquery ajax関数でパラメーターを「id」として渡すときに、パラメーター「item」でリストにデータを入力しているように見えます。

それらの1つを変更し、あなたは良いはずです。

于 2012-11-07T20:21:29.497 に答える
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 に答える