我还有一个问题。XMLhttpRequests一直困扰着我。现在一切都在数据库中,但是我需要这些数据来在第一次页面加载或重新加载时更新我的页面。XHR在JavaScript文件中触发,该文件触发PHP-Script。PHP脚本访问MySQL数据库。但是,如何将获取的记录返回到JavaScript中以进行页面更新呢?我想不出来。
首先是我的同步XMLhttpRequest:
function retrieveRowsDB()
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","retrieveRowData.php", false);
xmlhttp.send(null);
return xmlhttp.responseText;
}
然后是我的PHP脚本:
<?php
$con = mysql_connect("localhost","root","*************");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("sadb", $con);
$data="SELECT * FROM users ORDER BY rowdata ASC";
if (!mysql_query($data,$con))
{
die('Error: ' . mysql_error());
}
else
{
$dbrecords = mysql_query($data,$con);
}
$rowdata = mysql_fetch_array($dbrecords);
return $rowdata;
mysql_close($con);
?>
这里我漏掉了什么?有谁有线索吗?
发布于 2010-06-15 18:49:51
到目前为止,你的代码在技术上并没有太大的问题--你只需要对它做一些实际的事情。
在PHP文件中,您需要以某种方式输出它,而不是return $rowdata;
。目前,它只是将一个空白文档发送回javascript,因此您需要echo
出代码。通常,当使用要返回给javascript的大量对象时,JSON是一种很好的格式。查看json_encode
。
另一方面,在js中,您需要获取响应并以某种方式更新页面。目前,您只是再次返回它。
我建议您阅读一些ajax教程,并考虑使用jQuery这样的框架来为您完成繁重的工作。你可能还想在这个主题上读一些书,因为你有一些基本的误解。
发布于 2010-06-15 18:42:51
PHP脚本不能return
到JavaScript。您必须对数据进行编码( echo
)(以某种方式编码,例如json_encode)。
实际上,如果您正在进行任何类型的ajax,那么使用ajax library将使您的工作变得更加轻松。
发布于 2010-06-15 18:43:28
问题是xmlhttp.responseText
,它当时还不存在,试着在你的return语句之前添加这个:
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
doSomething(xmlhttp.responseText);
}
}
}
基本上,您必须等到数据可用,发出HTTP请求并获得响应需要时间。
https://stackoverflow.com/questions/3044363
复制相似问题