0

我正在构建一个应用程序。我工作的主要目的是根据数据库条目更改 php 页面中的对象。

我有一个 php 文件ajax.php。它将查询数据库表并将值返回到我的另一个文件 main.php

主页面使用ajax查询数据库。并且根据数据库返回,它会在 php 页面中的某些位置显示一些图像。

示例:如果数据库查询的返回值为 2:它将在 (x1,y1) 位置显示图像并闪烁,并打开一个小窗口。

如果数据库查询的返回值为 3:它将在 (x2,y2) 位置显示图像并闪烁并打开一个窗口2

我无法将 ajax 查询值传递给我的 php 部分。只有当我想在其中输入值时才有可能。

但我想做类似的事情

if ($returnvalue == 1)

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

if ($returnvalue == 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);
?>

主文件

<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 将信息发送回生成它的文件,因为结果无法到达那里。

把它想象成把船送过河:如果你到了对岸,你可能会注意到你没有绳子可以系船。然而,你不能再把绳子加到船上,因为它已经和你在一起了;您需要提前计划(“我真的应该随身携带绳索”)或派另一艘船为您带来绳索。

你可以做的是三件事之一,按照我推荐的顺序:

  1. 由于您无论如何都希望在页面加载时显示信息,因此您可以简单地将代码放在您希望它出现的同一页面中。因此,在您的代码中,您将您的评论放在“这就是我需要发生这种情况的地方”的位置,将您的数据库调用和逻辑放在那里,而不是放在单独的 ajax.php 文件中。
  2. 将要显示的内容的逻辑放在 ajax.php 中,这样您就无需将数字发送到浏览器,而是发送您想要显示的内容。
  3. 将要显示的内容的逻辑放在您的 javascript 函数中。
于 2013-09-11T15:12:13.017 回答