PHP AJAX - 具有特定实时状态检查和操作的按钮


PHP AJAX - Buttons with Specific Realtime Status Check and Action

我需要对按钮进行实时循环"状态检查"。按钮"类"或"id"名称将根据它从txt文件获得的值进行更改。然后,将使用CSS处理此类/ID名称。此外,这个按钮类或 id 取决于名称应该触发/调用函数只是为了运行特定的 php 文件。

以前:我只使用PHP完成了它,但没有实时的"状态检查":<它看起来像这样:>

<?php
if(isset($_POST['run1']))
{exec('run1.bat');}?>         // In this part it is waiting a button push with specific                 
<?php                        //  class name and then runs some bat file which runs some                   
if(isset($_POST['run2']))   //   command and writes output to R1.txt
{exec('run2.bat');}?>
<?php
$r1 = "R1.txt";                   //This part reads txt file R1.txt  ...
$fr1 = fopen($r1, "a+");         
$sizer1 = filesize($r1);
$tr1 = fread($fr1, $sizer1);
sscanf($tr1, "SOMERANDOM TEXT(%d)", $nr1);   // ...and gets value 1 or none
fclose($fr1);
?>
<form action="" method="post">   //This part is a form
<?php
if ($nr1=="1")                  //Here it check's value from txt and load specific
{                               //  type of button.
 echo '<input type="submit" class="runing1" name="run1" value="">' . "'n";
}
else
{
 echo '<input type="submit" class="runing2" name="run2" value="">' . "'n";
}
?>

现在我想出这样的结构:将会有检查.php类似的东西

    <?php
    $r1 = "R1.txt";                   //This part reads txt file R1.txt  ...
    $fr1 = fopen($r1, "a+");         
    $sizer1 = filesize($r1);
    $tr1 = fread($fr1, $sizer1);
    sscanf($tr1, "SOMERANDOM TEXT(%d)", $nr1);   // ...and gets value 1 or none
    fclose($fr1);
    ?>
    <?php
    $r2 = "R2.txt";                   //This part reads txt file R2.txt  ...
    $fr2 = fopen($r2, "a+");         
    $sizer2 = filesize($r2);
    $tr2 = fread($fr2, $sizer2);
    sscanf($tr2, "SOMERANDOM TEXT(%d)", $nr2);   // ...and gets value 1 or none
    fclose($fr2);
    ?>

这个PHP文件应该发布那些$nr 1和$nr 2值,一些外部为Ajax。然后会有索引.php/htm有几个按钮,通过检查运行某种循环.php并获取按钮的值并在按钮上应用指定的类或 id。如是/否或开/亮等。然后根据按钮状态类/id,它应该运行特定的功能。在"完美性"中,如果在 AJAX 的帮助下类或 id 可能是可变的,那就太好了,因为它可以被 POST 以使用类似代码的其他 run.php 文件......

<?php
if(isset($_POST['$class-name-from-button']))
{exec('($_POST['$class-name-from-button']).bat');}?>                          
<?php  

我认为它可以节省大量"重复同一行代码"的空间。

您可以使用

$.post,$.get或更通用的$.ajax(在这里您可以手动指定数据是否应该以post或get格式发送)。

我将演示 $.post 格式。

var url = "yourserver.com/check.php";
var data = "checking=true";
$.post(url, data, function(result){
if(result == "1")
$("input").removeClass("runing2").addClass("runing1");
else
$("input").removeClass("runing3").addClass("runing2");
});

您的支票.php应包含以下代码:

<?php
if(isset($_POST["checking"])){
$r1 = "R1.txt";                   //This part reads txt file R1.txt  ...
$fr1 = fopen($r1, "a+");         
$sizer1 = filesize($r1);
$tr1 = fread($fr1, $sizer1);
sscanf($tr1, "SOMERANDOM TEXT(%d)", $nr1);   // ...and gets value 1 or none
fclose($fr1);
echo $nr1;
}
?>

以下是一些参考资料:

http://api.jquery.com/jquery.post/

http://api.jquery.com/jquery.get/

http://api.jquery.com/jquery.ajax/