0

私はアプリケーションを構築しています。私の仕事の主な目的は、データベース エントリに従って、php ページ内のオブジェクトを変更することです。

私は1つのphpファイルを持っていますajax.php。データベーステーブルにクエリを実行し、値を別のファイル main.php に返します。

メイン ページでは ajax を使用してデータベースにクエリを実行します。また、データベースの戻り値に応じて、php ページのいくつかの位置にいくつかの画像が表示されます。

例: データベース クエリからの戻り値が 2 の場合: (x1,y1) の位置に画像が表示され、点滅して小さなウィンドウが 1 つ開きます。

データベース クエリからの戻り値が 3 の場合: (x2,y2) の位置に画像が表示され、点滅して 1 つのウィンドウが開きます2

ajax クエリ値を php 部分に渡すことができません。値を入力したい場合にのみ可能です。

しかし、私は次のようなことをしたい

if ($戻り値 == 1)

 window.open("window1");
 blink_image1(); 

もし ($戻り値 == 2)

 window.open("window2");
 blink_image2();

私を助けてください。

コード スニペットは次のとおりです。

ajax.php

<?php
$q = intval($_GET['q']);

$con = mysqli_connect('localhost','user','password','database');
if (!$con)
{
    die('Could not connect: ' . mysqli_error($con));
}

mysqli_select_db($con,"ajax_demo");

$sql='SELECT id FROM table_name order by timedate asc' ;

$result = mysqli_query($con,$sql);


while($row = mysqli_fetch_array($result))
{
    $value = $row['id'];

}
echo $value;  
mysqli_close($con);
?>

main.php

<html>
<head>
    <IMG STYLE="position:absolute; TOP:135px; LEFT:350px; WIDTH:900px;   HEIGHT:500px"SRC="testrect1.php"/>
    <script>
    var refreshtime=10000;
    function showUser(str)
    {
        setTimeout(showUser,refreshtime);
        if (str=="")
            {
            document.getElementById("txtHint").innerHTML="";
            return;
        }
        if (window.XMLHttpRequest)
        {
            xmlhttp=new XMLHttpRequest();
        }
        else
        {
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
                var msg=document.getElementById("txtHint");
            }

        }
        xmlhttp.open("GET","ajax.php?q="+str,true);
        xmlhttp.send();
    }
    </script>
</head>

<body onload="showUser(this.value)">
    <div id="txtHint"></p> </div>

    <?php

/*
    I need the return value here.. So that I can do
    if ($return_val == 1)
    Blink_image1();
    open_window1();
    .

    if ($return_val == 2)
    Blink_image2();
    open_window2();
 */
    ?>


 </body>
 </html>

私を助けてください..

4

1 に答える 1

0

ページがまだロードされているため、AJAX リクエストを PHP ファイルに戻そうとしているようです。それはうまくいきません。PHP はサーバー上で実行されますが、javascript はユーザーのブラウザーで実行されます。つまり、結果がそこに到達する方法がないため、ファイルによって生成された JavaScript がそれを生成しているファイルに情報を送り返すことはできません。

ボートを川に送るようなものだと考えてください。反対側に着いたら、ボートを縛るロープがないことに気付くかもしれません。ただし、ボートにロープを追加することはできません。前もって計画を立てるか (「本当にロープを持ってくるべきだ」)、ロープを持ってくるために別のボートを手配する必要があります。

代わりにできることは、次の 3 つのことのいずれかです。推奨する順序で示します。

  1. いずれにせよ、ページロード時に情報を表示したいので、表示したいページと同じページにコードを配置するだけです。そのため、「これが必要な場所はここです」というコメントを入れるコードでは、別の ajax.php ファイルではなく、データベース呼び出しとロジックをそこに入れます。
  2. 何を表示するかのロジックを ajax.php の中に入れて、番号をブラウザに送信する代わりに、表示したいものを送信するようにします。
  3. 何を表示するかのロジックを JavaScript 関数内に配置します。
于 2013-09-11T15:12:13.017 に答える