Javascript 通过AJAX调用PHP文件,将$\u GET变量传递到MySQL查询中,然后响应

Javascript 通过AJAX调用PHP文件,将$\u GET变量传递到MySQL查询中,然后响应,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,因此,当我单击class=username属性的任何div时,就会激活这个jQuery AJAX调用,该属性包含用户的用户名,如: <div class="username">Sneaky</div> 下面是它调用的PHP文件: include 'MySQL_connect.php'; $name = mysql_real_escape_string($_GET['usersName']); $sql = "SELECT chat_color FROM users

因此,当我单击class=username属性的任何div时,就会激活这个jQuery AJAX调用,该属性包含用户的用户名,如:

<div class="username">Sneaky</div>
下面是它调用的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做了很多工作,看起来应该可以正常工作。

如果我错了,请不要咬我,假设你所有的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'>";
试试这个

PHP


我想出来了。我做了一些测试,在检查javascript usersName变量的设置之后,我注意到在开始时有一个空格。我不知道为什么,也不知道它是如何到达那里的,但它就在那里。我只是在PHP文件中做了如下快速解决方法:

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

这只是从字符串的开头修剪空白。谢谢你的帮助!:

你能在ajax中添加数据类型:“text”吗?@Guratio刚刚尝试过,输出结果没有什么不同。你能对ajax做些什么回应吗?顺便说一下,你的回音没有正确连接$name.@guradio实际上不需要将PHP变量串接在一个字符串中,只要它们在双引号中。在我把它改成现在的样子之前,我已经把它设置好了,输出是一样的。那么Response给了你什么?如果你在网络中检查它的话?这就是我把它改成现在的样子之前的实际情况P但是如果您注意到,响应实际上包括$name变量,因此其他变量也应该工作。不要咬,至少你试过了;尝试此操作后,只得到一个错误:SyntaxError:JSON.parse:JSON数据更改的第1行第1列出现意外字符,因为“我编辑了我的答案并尝试了…”。。。它正在工作。。。。如果sql结果正确,它应该可以工作…好的,这消除了错误,但输出与以前完全相同。我以前试过的时候一定是打错了:P
$text='<div style="color:'.$chatColor.'">'.$name.'</div>
<img style="height:64px"src="../profile/profile_pictures/'.$profilePic .'">';
echo '{"item" :'.json_encode($text).'}';
success: function(data) {
    obj=$.parseJSON(data);
    $("#profilePopup").show().offset({left:e.pageX,top:e.pageY}).html(obj.item);
}
$name = mysql_real_escape_string($_GET['usersName']);
$name = ltrim($name," ");