1

在我的家庭服务器管理应用程序中,我添加了一个通过应用程序远程唤醒 PC 的功能。执行此操作的 PHP 脚本完美运行,但我希望能够通过 AJAX 调用来执行此操作。

调用是这样发生的:

用户单击 PHP 生成的链接:

<a href=\"javascript:wake('$hostname')\">Wake</a>

函数(jQuery)在哪里:

function wake(hostname) {
    $(document).ready(function()
    {
       alert('function works');
       $.post('ajax/wake.php',{host: hostname});
       alert('Command executed');
    });
}

两个警报都会显示,这意味着 AJAX 调用已执行。php 脚本如下所示:

<?php
include_once("../classes/BLClient.php");
$blClient = new BLClient(true);
$hostname = $_GET["host"];

$client = $blClient->getClientByHostname($hostname);
$mac = $client->getMac();

echo `sudo etherwake -i eth1 $mac`;
?>

但是,我的电脑没有被唤醒。如果我直接浏览到脚本,它确实有效......

4

3 回答 3

1

您正在触发$.postajax 请求,但您正在读取$_GETPHP 脚本中的参数。改为执行$.getajax 请求,否则数据将$_POST不在$_GET.

或者,您可以使用$_REQUESTPHP 中包含 post 和 get 变量的超全局变量。

于 2011-07-06T08:35:04.817 回答
0

你可能需要使用

$_POST["host"]$_REQUEST["host"] 在您的 php 脚本中,因为您正在执行 Jquery 帖子。

在浏览器中,您可能会传递主机,例如:

 http://www.mysite.com/ajax/wake.php?host=xxxxxxxx

这导致“主机”出现在 $_GET 中。

于 2011-07-06T08:36:55.997 回答
0

你正在打电话' $.post',所以在这里你必须使用“ $_POST["host"]

于 2011-07-06T08:39:39.607 回答