以下代码来自登录页面。我想在用户填写用户名onkeyup时更新用户的图像。图像路径是通过PHP。脚本代码如下:
function showUserPic(str) {
if (str == "") {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
// document.getElementById("img").innerHTML=xmlhttp.responseText;
x = document.getElementById("img");
x.src = 'users/'+xmlhttp.responseText;
}
}
xmlhttp.open("GET","getuser.php?q="+str,true);
xmlhttp.send();
}
}
HTML代码如下:
<input type="text" class="inputLabel1" style="margin:5px;" name="userText" onkeyup="showUserPic(this.value)" />
PHP文件代码如下:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
$user = intval($_GET['q']);
$conn = mysqli_connect("localhost","root","","pharmacy");
if (!$conn) {
die('Could not connect: ' . mysqli_error($con));
}
$query = "SELECT * FROM users WHERE username = '$user';";
$result = mysqli_query($conn, $query);
$userdata = mysqli_fetch_array($result);
mysqli_close($conn);
echo $userdata['image'];
?>
</body>
</html>
答案 0 :(得分:1)
首先提出一个建议:$query = "SELECT * FROM users WHERE username = '$user';";
最好是$query = "SELECT image FROM users WHERE username = '$user';";
,因为不需要从表格中返回所有列。
然后你应该考虑转向PDO而不是弃用的mysql和mysqli扩展。
然后您的问题就在这里:
$userdata = mysqli_fetch_array($result);
mysqli_close($conn);
echo $userdata['image'];
$ userdata是一个数组。所以你不能回应它。你应该考虑这样做:
foreach($userdata as $temp){
echo $temp['image'];
}
另外,正如其他人所说,从你的php文件中删除所有领先的html,只是回显图像名称。
答案 1 :(得分:0)
使用以下JS系列打印您的回复:
console.log(xmlhttp.responseText);
或者您也可以使用firebug检查图像标记<img src="" />
,并确认您是否获得了正确的图像名称。如果一切正常,请检查用户图像文件夹的文件权限以及用户图像。
答案 2 :(得分:0)
您将用户名作为字符串传递,但使用intval()获取变量。这不起作用。
答案 3 :(得分:0)
正如@ dan-klasson所说 - 你需要从仅服务器的图像路径返回。您的HTML和JS可以保持原样,但您需要将PHP标记更改为:
<?php
$user = intval($_GET['q']);
$conn = mysqli_connect("localhost","root","","pharmacy");
if (!$conn) {
die('Could not connect: ' . mysqli_error($con));
}
$query = "SELECT * FROM users WHERE username = '$user';";
$result = mysqli_query($conn, $query);
$userdata = mysqli_fetch_array($result);
mysqli_close($conn);
echo $userdata['image'];
?>
您的实际代码正在返回:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
example_image.jpg
</body>
</html>
并且您的脚本将所有这些插入到您的图片代码中,因此它将是:
<img src="users/%3C!DOCTYPE%20html%3E%0A%20%20%20%20%3Chtml%3E%0A%20%20%20%20%3Chead%3E%0A%20%20%20%20%3C%2Fhead%3E%0A%20%20%20%20%3Cbody%3E%0A%20%20%20%20example_image.jpg%0A%20%20%20%20%3C%2Fbody%3E%0A%20%20%20%20%3C%2Fhtml%3E"/>
它可能不是您想要的:)只需更改您的PHP代码。
修改强> 您的代码中的另一个错误是您的请求参数(尝试用户名)的intval:
$user = intval($_GET['q']);
将其更改为:
$user = $_GET['q'];