我正在使用AJAX和PHP从数据库中检索数据。在数据库中,其中一列包含图像文件夹的路径。我在名为$ folder的PHP变量中保存路径的值。这可以在getuser.php代码中看到。
我希望这个变量在one.php中可见/可用,以便可以填充使用此变量的图像。我该怎么做我也尝试过包含php但没有用。
的 getuser.php
<?php
$q=$_GET["q"];
$con = mysql_connect('localhost', 'san', '123');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("holidayNet", $con);
$sql="SELECT * FROM image WHERE id = '".$q."'";
$result = mysql_query($sql);
echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
<th>Hometown</th>
<th>Picture</th>
</tr>";
while($row = mysql_fetch_array($result))
{
$folder = $row['FirstName'];
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "<td>" . $row['Age'] . "</td>";
echo "<td>" . $row['Hometown'] . "</td>";
/*echo "<td>" . $row['Job'] . "</td>";*/
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?>
的 one.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script type="text/javascript">
function showUser(str)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
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("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getuser.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
<select name="users" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<option value="1">Sn Qb</option>
<option value="2">Lois Griffin</option>
<option value="3">Glenn Quagmire</option>
<option value="4">Joseph Swanson</option>
</select>
</form>
<br />
<div id="txtHint"><b>Person info will be listed here.</b></div><br />
<img src="<?php echo $folder;?>/pic1.jpg" />
<img src="<?php echo $folder;?>/pic2.jpg" />
<img src="<?php echo $folder;?>/pic3.jpg" />
<img src="<?php echo $folder;?>/pic4.jpg" />
</body>
</html>
答案 0 :(得分:2)
嘿,你正在PHP文件中创建一个变量名$文件夹(getuser.php),这是由AJAX调用的。但它在文件名one.php中不可用。
JS变量xmlhttp.responseText
因此,您将获得在getuser.php中回显的所有人员信息,但不会获得$ folder变量。
因为您已经专门硬编码了4张图像。我建议你在getuser.php中回显img标签以及所选人员数据库中的其他信息。
while($row = mysql_fetch_array($result))
{
$folder = $row['FirstName'];
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "<td>" . $row['Age'] . "</td>";
echo "<td>" . $row['Hometown'] . "</td>";
/*echo "<td>" . $row['Job'] . "</td>";*/
echo "</tr>";
}
echo "</table>";
for($i = 0; $i < 4; $i++)
{
echo '<img src="'.$folder.'/pic'.($i+1).'.jpg" />';
}
并从one.php页面中删除这些图片标记
另一种解决方案: 我可以给出的建议是添加一些分隔符来区分这两件事。一个是您要打印的表和$ folder变量值。 例如:考虑分隔符####
第1步: 所以现在你的getuser.php代码将是
while($row = mysql_fetch_array($result))
{
$folder = $row['FirstName'];
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "<td>" . $row['Age'] . "</td>";
echo "<td>" . $row['Hometown'] . "</td>";
/*echo "<td>" . $row['Job'] . "</td>";*/
echo "</tr>";
}
echo "</table>####".$folder;
第2步: one.php中的更改以分隔2个值
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
// split is the function which breaks the string with the value provided and then creates an array of the parts.
var arrResponse = (xmlhttp.responseText).split("####");
// added || below to validate the index 1 of arrResponse. if xmlhttp.responseText does not have #### it wont break the string and hence wont have the folderName part, in such cases javascript will give undefined value, by adding || we tell if value is present take the present value otherwise take it as an empty string ''
var folderName = arrResponse[1] || ''
document.getElementById("txtHint").innerHTML=arrResponse[0];
// we will fetch all the image tags from your html page
var arrImgs = document.getElementsByTagName('img');
var imgCount = arrImgs.length;
for(i = 0; i < imgCount; i++)
{
arrImgs[i].setAttribute('src', folderName+'/pic'+(i+1)+'.jpg');
}
}
答案 1 :(得分:0)
你做错了是你把东西混在一起,特别是PHP和HTML,如果你愿意,我可以更好地解释,但目前我只会尝试解释你的问题的解决方案,我希望这会对你好。
1 / one文件无法访问$ .php
2 /从$文件夹中获取信息,你最好在Ajax查询中获取它,然后你可以使用Javascript函数来改变属性 3 /另一个解决方案是,因为你在getuser.php中生成表的html代码,你还可以生成更多包含图像包的行我解释得好吗?如果没有,我准备再试一次:)
祝你好运
答案 2 :(得分:0)
根据您的要求,我会以与您之前相同的方式告诉您一个可能的解决方案
首先,您需要更改两个文件
1 /转到getuser.php并删除所有echo,将字符串存储在变量中
2 /比循环之后用你的两个变量创建一个索引数组($ folder和包含html字符串的新变量)
3 /之后您可以使用“json_encode”函数(从PHP5开始提供)以json格式对数组进行编码
4 /所有你还需要做的,是在one.php页面中,当你得到结果你需要解码你用“eval”函数(一个原生的Javascript函数)获得的字符串时,这个函数将返回索引数组(具有相同的索引)并将html字符串放在“txtHint”div中,使用图像标记中其他变量的内容(使用javascript函数)是否足够清楚了? (对不起,我的英语不太好:()