我是一名AJAX新手,我在尝试从mySQL和我的javascript函数中获取数据时遇到了很大的麻烦。
我想要做的是在php中循环我的数据并以某种方式将该数据发送到页面上的各种命名div。
以下是我的javascript页面中的代码:
function loadPageContent(){
var projectID = getQuerystring('pid');
var templateID = getQuerystring('t');
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null){
alert ("Browser does not support HTTP Request")
return
}
var url="getImages.php"
url=url+"?projectID="+projectID
url=url+"&templateID="+templateID
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
document.getElementById("statusdebug1").innerHTML=xmlHttp.responseText;
}
}
xmlHttp.send(null);
}
这是我的php页面的代码:
<?php
$projectID = $_GET["projectID"];
$templateID = $_GET["templateID"];
include_once('includes/php/conn.php');
$sql ="select * FROM imageSel WHERE projectID='$projectID' AND templateName = '$templateID'";
$results=mysql_query($sql, $link);
if(!($mysql_rs = mysql_query($sql, $link)))
die("Error in executing query");
echo "<script language='JavaScript'>";
while($row =mysql_fetch_assoc($results) ){
$imageSelID = $row['imageSelID'];
$templateName = $row['templateName'];
$tNode = $row['box'];
$image = $row['image'];
$sql2 ="select * FROM products WHERE productid='$image'";
if(!($mysql_rs = mysql_query($sql2, $link)))
die("Error in executing query");
//Retrieve values
$row2 = mysql_fetch_array($mysql_rs);
$productname = $row2['productname'];
$subcategoryid = $row2['subcategoryid'];
$sql3 ="select * FROM subcategory WHERE subcategoryid='$subcategoryid'";
if(!($mysql_rs = mysql_query($sql3, $link)))
die("Error in executing query");
//Retrieve values
$row3 = mysql_fetch_array($mysql_rs);
$foldername = $row3['foldername'];
$foldername = strtolower($foldername);
$theImage = '<img src="images/lowres/' . $foldername . '/' . $productname .'" />';
echo "document.getElementById(".$tNode.").innerHTML=".$theImage.";";
}
echo "</script>";
?>
答案 0 :(得分:0)
这通常不是我如何实现AJAX。
AJAX,如果操作正确,应该将数据发送到浏览器,然后让浏览器决定如何处理它。
尝试使用json_encode
将要发送的数据以JSON格式发送到浏览器,然后在Javascript端使用JSON library对数据进行解码,然后对其进行适当处理。
答案 1 :(得分:0)
请使用此代码:
xmlHttp.open( “GET”,网址的假强>);
因为如果你保持其真实,那么它将调用asynchronize ajax。
如果我错了,请更正。
答案 2 :(得分:0)
您正在设置对div的innerHTML的Ajax响应。但是您在PHP中输出了javascript(这将成为您的Ajax响应)。尝试仅输出img标签而不使用javascript包装器。或者,甚至只输出“Hello world”;
编辑添加:您在客户端和服务器端使用javascript getElementById和innerHtml。这是多余的。您可能希望将其保留在客户端,即您的html和javascript