我创建了一个php页面,从数据库中获取数据然后获取php文件的html页面并使用AJAX刷新它,但是我需要将php代码放在html文件中并刷新代码,这是我的代码从外部文件刷新div标签:
<script>
function Ajax(){
var xmlHttp;
try{
xmlHttp=new XMLHttpRequest();
}
catch (e){
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){
alert("Oops!");
return false;
}
}
}
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
document.getElementById('ReloadThis').innerHTML=xmlHttp.responseText;
setTimeout('Ajax()',2000);
}
}
xmlHttp.open("GET","see.php",true);
xmlHttp.send(null);
}
window.onload=function(){
setTimeout('Ajax()',2000);
}
</script>
<div id="ReloadThis"></div>
但我想在同一页面中刷新特定的PHP代码,例如:
<script>
function Ajax(){
var xmlHttp;
try{
xmlHttp=new XMLHttpRequest();
}
catch (e){
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){
alert("Oops!");
return false;
}
}
}
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
document.getElementById('ReloadThis').innerHTML=xmlHttp.responseText;
setTimeout('Ajax()',2000);
}
}
xmlHttp.open("GET","see.php",true);
xmlHttp.send(null);
}
window.onload=function(){
setTimeout('Ajax()',2000);
}
</script>
<?php
$txt = $_POST['text'];
$sql = mysql_query("SELECT * FROM `table`WHERE `id` = '$txt'");
while($fetch = mysql_fetch_array($sql)){
$names = $fetch['name'];
echo $names;
echo "</br>";
}
?>
如何在同一页面中刷新php代码?
答案 0 :(得分:2)
PHP代码由服务器执行。它永远不会到达浏览器,因此无法刷新它。您必须在服务器端重新执行PHP并重新加载页面。如果您无法通过JavaScript实现所需,那么页面重新加载是您唯一的选择。
答案 1 :(得分:0)
将PHP代码移动到单独的文件中并使用AJAX调用它。 PHP代码可以使用名称列表进行响应。 AJAX回调函数应该处理重新填充需要更新的页面部分。
现在,您的代码对SQL注入攻击持开放态度。请参阅How can I prevent SQL injection in PHP?此外,不推荐使用mysql_ *函数,因此建议您migrate to mysqli functions或PDO。
PHP代码示例(未经测试):
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$txt = $mysqli->real_escape_string($_POST['text']);
$mysqli->query("SELECT * FROM `table` WHERE `id` = '$txt'");
$names = array();
while($fetch = mysqli->fetch_array($sql)) {
$names[] = $fetch['name'];
}
echo header('Content-type: text/plain');
echo implode(',', $names);
这将返回一个简单的逗号分隔名称列表。
示例AJAX回调例程(未经测试):
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
var resp = xmlHttp.responseText;
var names = resp.split(",");
var htmlString = "";
for (var i = 0; i < names.length; i++) {
htmlString += names[i] + "<br/>";
}
document.getElementById('ReloadThis').innerHTML=htmlString;
setTimeout('Ajax()',2000);
}
}
不要复制&amp;糊!请注意,自jQuery发明以来,我没有使用原始Javascript进行AJAX调用,所以我的代码可能不太理想,或者右下方不正确。不过,它应该给你一般的想法。我也会使用JSON而不是逗号分隔列表。
我希望这能回答你的问题。如果我误解了你的问题,请告诉我。