Php 如何使用AJAX从数据库中获取值?
.jsPhp 如何使用AJAX从数据库中获取值?,php,mysql,ajax,Php,Mysql,Ajax,.js 函数显示pic(str){ 如果(str=”“){ document.getElementById(“滑块”).innerHTML=“”; } if(window.XMLHttpRequest){ xmlhttp=新的XMLHttpRequest(); } xmlhttp.onreadystatechange=函数(){ if(xmlhttp.readyState==4){ document.getElementByTagName(“src”).innerHTML=xmlhttp.res
函数显示pic(str){
如果(str=”“){
document.getElementById(“滑块”).innerHTML=“”;
}
if(window.XMLHttpRequest){
xmlhttp=新的XMLHttpRequest();
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4){
document.getElementByTagName(“src”).innerHTML=xmlhttp.responseText;
警报(xmlhttp.responseText);
}
};
open(“GET”,str,true);
xmlhttp.send();
}
.php
你有。。。很多问题
我认为第一个是将str
赋值给displayPic(str)
函数顶部的null。在javascript中,=
是赋值,=
测试相等性(并且=
也测试类型)
因此,您正在调用xmlhttp.open(“GET”,true)
,它将再次调用当前页面并在responseText
中再次返回页面html
此外,没有getElementByTagName(标记)
<另一方面,code>getElementsByTagName(tag)
将获取具有该标记名的节点列表。。。我从来没有听说过html中的src
标记。也许您是指要设置的src
的img
标记
看起来您正在使用同一个页面作为您的网页以及ajax端点的用户视图。这可能不会给您带来好的结果,但如果您必须这样做,请对整个网页进行测试,这样它就不会将包含所有图像的整个网页再次作为您的responseText
。比如:
<form onclick="displayPic(this.value)" method="GET" action="gallery.php">
<?php
include 'konekcija.php';
$upit = "SELECT * FROM slike";
$rezultat = mysql_query($upit) or die(mysql_error());
while($red = mysql_fetch_array($rezultat)){
echo "<div class='art_gallery'><img src='";
echo $red['path'];
echo "' class='gall' name='id_s' value='".$red['id']."' />".$red['id']."</div>";
}
?>
<?php
if(isset($_GET['id_s'])){
$q = $_GET['id_s'];
echo $q;
$upit2 = "SELECT path FROM slike where id=".$q;
mysql_query($upit2) or die(mysql_error());
echo "<div id='slider' align='center'><img src='' class='slider'/></div>";}?>
</form>
您的onclick
需要移动到具有值本身的图像。如果在表单上使用displayPic(this.value)
,此
将是没有值的表单。您设置值的唯一元素是图像,因此displayPic()
调用需要在图像上执行
此外,img标记不是输入对象。。。在javascript节点对象中,它没有“value”成员。您可以通过以下方式获得“value”属性:
if (isset($_GET['id_s']) { do my ajax thing } else { the normal webpage }
或者,只需将该值设置为img标记的id并使用this.id可能会更容易
然后,因为它只是您要传递的一个值,所以您需要将字符串编辑为:
displayPic(this.getAttribute('value'));
因此,get上的查询字符串会随着其中的id参数而更改。好的,如果我正确理解了这个问题,您在使用javascript访问PIC时遇到了问题,因此您需要做的是更改这一部分
str = "?id_s=" + str;
while($red=mysql\u fetch\u数组($rezultat)){
回显“$red['id']”;
}
为此:
while($red = mysql_fetch_array($rezultat)){
echo "<div class='art_gallery'><img src='";
echo $red['path'];
echo "' class='gall' name='id_s' value='".$red['id']."' />".$red['id']."</div>";
}
while($red=mysql\u fetch\u数组($rezultat)){
回显“$red['id']”;
}
现在,只需访问javascript中的zoompic函数,您就可以将单击图片的id作为参数,这样您就可以对其执行任何操作。生成的HTML是什么样子的?第一个PHP部分将完成,并显示图库缩略图。它们使用CSS显示为缩略图。但问题在于$\u GET['id\u s'],它返回false。这确实让我觉得自己像个白痴。但问题仍然存在,单击图像不会将其值发送到PHP。
while($red = mysql_fetch_array($rezultat)){
echo "<div class='art_gallery'><img src='";
echo $red['path'];
echo "' class='gall' name='id_s' value='".$red['id']."' />".$red['id']."</div>";
}
while($red = mysql_fetch_array($rezultat)){
echo "<div class='art_gallery'><img src='";
echo $red['path'];
echo "' class='gall' name='id_s' onclick='zoompic(".$red['id'].");' />".$red['id']."</div>";
}