如何使用ajax检索不同的值?

时间:2015-11-19 19:15:36

标签: php html ajax

我有2个div框。第一个div框包含我之前转换过的用户名。 第二个div框将显示我和用户的对话历史....

这是我的代码..

$compiler = $volt->getCompiler();

$compiler->addFunction('pagination_url', function ($resolvedArgs, $exprArgs) use ($compiler) {

     $url = $compiler->expression($exprArgs[0]['expr']);
     $page = $compiler->expression($exprArgs[1]['expr']);

     return $url . '.\'?\'.http_build_query(array_merge($this->request->getQuery(), [\'page\' => ' . $page . ']))';
});

在上面的代码中,每个名称都会显示在li列表中。现在当我点击一个li列表时,让我说我点击第三个li并且id应该是34,它不会发生。它仍然会加载第一个我的ID ...我找不到修复程序。

以下是我的ajax的代码:

<ul style="list-style-type: none;">
    <?php  
    include 'connectDB.php';
    //retrieve all the message history of yours from the PrivateMessage table
    $query = "SELECT * FROM `messagecheck` WHERE `sender_a` = '$userId' OR `sender_b` = '$userId';";
    $result = mysqli_query($dbconnect,$query);
    if (mysqli_num_rows($result) > 0) { 
        while ($row = mysqli_fetch_assoc($result)) {    
    ?>
    <div class="openChat" style="border:2px solid red">
        <li style="color:black; width:100%; padding-top:5px" onclick="message()">
            <?php 
            //if the sender_a id is not my id, display the name
            //if sender_a is my id, then display sender_b
            //Because we dont want to see our name in the chat History
            if ($row['sender_a'] != $userId) {
                $senderName = $row['sender_a'];
                include 'connectDB.php';
                $nameSearch = "SELECT `fName`, `lName` FROM `register` WHERE `id`='$senderName';";
                $Searchresult = mysqli_query($dbconnect, $nameSearch);
                $Searchrow = mysqli_fetch_assoc($Searchresult);
                echo $Searchrow['fName'] ." ". $Searchrow['lName'];
            ?>
            <input class="IDValue" name="IDValue" value="<?php echo $row['exist']?>" >
            <?php
            } else {
                $senderName = $row['sender_b'];
                include 'connectDB.php';
                $nameSearch = "SELECT `fName`, `lName` FROM `register` WHERE `id`='$senderName';";
                $Searchresult = mysqli_query($dbconnect,$nameSearch);
                $Searchrow = mysqli_fetch_assoc($Searchresult);
                echo $Searchrow['fName'] ." ". $Searchrow['lName'];
            ?>
            <input class="IDValue" name="IDValue" value="<?php echo $row['exist']?>" >
            <?php
            } 
            ?>
       </li>
    </div>
    <?php 
        }
    }
    ?>
</ul>

有人可以帮帮我吗?我真的厌倦了解决它。谢谢它提前!

P.S:它通常显示(一个chrome开发工具)http://localhost/html/retrieveMsg.php?q=16 nomatter,我点击(16是第一个li标签btw)

3 个答案:

答案 0 :(得分:2)

您正在选择'.IDValue',这是一个类名。请注意,此列表中的所有内容都具有此类名称,因为您执行以下操作:

<input class="IDValue"...

你应该这样做:

<input id="<?echo $row["idValue"];?>" ...

或类似的东西,然后:

var ID = document.getElementByID('34').value;

答案 1 :(得分:1)

由于你的选择器BufWriter,你总是得到16(它总是抓住第一场比赛,在你的情况下是li 16)。

如果您已经无法使用Javascript内联,则可以通过消息功能传递ID,或使用.IDValue将ID存储在li本身上:

data-id="<?php echo $row['exist']?>"

PS:您应该查看PDO以获取您的mysql数据

答案 2 :(得分:0)

您可以这样做:

<li style="..." --data-id="<?echo $row["idValue"];?>" onclick="message(this);">something you like</li>

然后,您必须声明如下消息:

function message(tag) {
    var ID = tag.getAttribute("--data-id");
    ...
}