在我的家庭服务器管理应用程序中,我添加了一个通过应用程序远程唤醒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`;
?>
然而,我的电脑没有被唤醒。如果我直接浏览脚本,它确实有用......
答案 0 :(得分:1)
您正在触发$.post
ajax请求,但您正在PHP脚本中读取$_GET
参数。请改为$.get
ajax请求,否则数据将位于$_POST
而不是$_GET
。
或者你可以使用PHP中包含post和get变量的$_REQUEST
超全局。
答案 1 :(得分:0)
您可能需要使用
$_POST["host"]
或$_REQUEST["host"]
在你的php脚本中,正如你在做一个Jquery帖子。
在浏览器中,您可能会传递主机:
http://www.mysite.com/ajax/wake.php?host=xxxxxxxx
导致$ _GET中出现“host”。
答案 2 :(得分:0)
你正在打电话'$.post
',所以你必须使用“$_POST["host"]
”