所以当我点击任何带有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做了很多,这看起来应该可以正常工作。
答案 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);
}