0

我创建了一个 php 页面,它从数据库的表中获取数据,然后 html 页面获取 php 文件并使用 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 代码?

4

2 回答 2

2

PHP 代码由服务器执行。它永远不会到达浏览器,因此无法刷新它。您将不得不在服务器端重新执行 PHP 并重新加载页面。如果你不能用 JavaScript 完成你想要的,页面重新加载是你唯一的选择。

于 2013-07-07T11:58:47.420 回答
0

将 PHP 代码移动到单独的文件并使用 AJAX 调用它。PHP 代码可以响应名称列表。AJAX 回调函数应该处理重新填充需要更新的页面部分。

就目前而言,您的代码容易受到 SQL 注入攻击。请参阅如何防止 PHP 中的 SQL 注入?此外, mysql_* 函数已被弃用,因此建议您迁移到 mysqli 函数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);
    }
}

不要复制和粘贴!请注意,自从jQuery发明以来,我没有将原始 Javascript 用于 AJAX 调用,因此我的代码可能不太理想或完全不正确。不过,它应该给你一个大致的想法。我也会使用 JSON 而不是逗号分隔的列表。

我希望这回答了你的问题。如果我误解了您的问题中的某些内容,请告诉我。

于 2013-07-07T12:53:39.827 回答