通过AJAX调用PHP文件,将$ _GET变量传递给MySQL查询,然后回应响应

时间:2016-04-27 02:16:17

标签: javascript php jquery mysql ajax

所以当我点击任何带有class =" username"的div时,我会激活这个jQuery AJAX调用。属性,包含用户的用户名,如:

<div class="username">Sneaky</div>

这是jQuery AJAX调用:

var usersName = '';
$('#chatContainer').delegate('div.username', 'click', function(e) {
    usersName = $(this).text();
    $.ajax({
        method: 'GET',
        url: 'profile_popup.php',
        data: { usersName: usersName },
        success: function(data) {
            $("#profilePopup").show().offset({left:e.pageX,top:e.pageY}).html(data);
        }
    });
});

这里是它调用的PHP文件:

include 'MySQL_connect.php';

$name = mysql_real_escape_string($_GET['usersName']);

$sql = "SELECT chat_color FROM users WHERE username='$name'";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$chatColor = $row["chat_color"];

$sql = "SELECT profile_pic FROM profiles WHERE username='$name'";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$profilePic = $row["profile_pic"];

echo "<div style='color:$chatColor'>$name</div>
        <img style='height:64px' src='../profile/profile_pictures/$profilePic'>";

我的问题是它返回时没有错误但没有MySQL数据库值,如下所示:

<div id="profilePopup">
     <div style="color:"> Sneaky</div>
     <img src="../profile/profile_pictures/" style="height:64px">
</div>

为什么这不能按预期工作的任何线索?我在这个网站上用jQuery,PHP和MySQL做了很多,这看起来应该可以正常工作。

3 个答案:

答案 0 :(得分:0)

如果我错了,不要咬我,假设你的所有SQL代码都是正确的,你可以试试吗

echo "<div style='color:" . $chatColor . "'>" . $name . "</div>
    <img style='height:64px' src='../profile/profile_pictures/" .     $profilePic . "'>";

- 编辑 - 也许将您的PHP文件编辑为:

include 'MySQL_connect.php';

$name = $mysqli->real_escape_string($_GET['usersName']);

$sql = "SELECT `chat_color`, `profile_pic` FROM users LEFT JOIN profiles ON (`users`.`username` = `profiles`.`username`) WHERE `username` = '" . $name . "'";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$chatColor = $row['chat_color'];
$profilePic = $row['profile_pic'];

echo "<div style='color:$chatColor'>$name</div>
    <img style='height:64px' src='../profile/profile_pictures/$profilePic'>";

答案 1 :(得分:0)

我明白了。我做了一些测试,并在检查了javascript&#34; usersName&#34;变量设置为,我注意到开头有一个空格。我不知道为什么,或者它是如何到达那里的,但它就在那里。我刚刚在PHP文件中做了如下快速解决方法:

$name = mysql_real_escape_string($_GET['usersName']);
$name = ltrim($name," ");

这只是简单地从字符串的开头修剪空格。感谢您的帮助! :)

答案 2 :(得分:-1)

试试这个。

<强> PHP

$text='<div style="color:'.$chatColor.'">'.$name.'</div>
<img style="height:64px"src="../profile/profile_pictures/'.$profilePic .'">';
echo '{"item" :'.json_encode($text).'}';

<强> AJAX

success: function(data) {
    obj=$.parseJSON(data);
    $("#profilePopup").show().offset({left:e.pageX,top:e.pageY}).html(obj.item);
}