0

データベースからテーブルからデータを取得する php ページを作成し、次に php ファイルを取得して AJAX を使用して更新する html ページを作成しましたが、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の発明以来、私はAJAX呼び出しに生のJavascriptを使用していないことに注意してください。そのため、私のコードは理想的ではないか、まったく正しくない可能性があります。それにもかかわらず、それはあなたに一般的な考えを与えるはずです. コンマ区切りリストの代わりに JSON も使用します。

これがあなたの質問に答えることを願っています。あなたの質問で何か誤解した場合は、お知らせください。

于 2013-07-07T12:53:39.827 に答える