【发布时间】:2015-05-07 00:39:05
【问题描述】:
这是我的第一篇文章,如果发错地方或格式不正确,我深表歉意!
我对 Web 开发非常陌生,无法找到我想要的东西,所以我想我会在这里问。我的愿望是在我的 Raspberry Pi 上创建一个包含 HTML 网页的 Web 服务器。单击 HTML 页面中的按钮时,将调用 HTML 页面底部的 Javascript 脚本以从文本框中获取文本并对其进行验证。然后,我想将此数据发送到 PHP 脚本(与 index.html 文件位于同一目录中),该脚本仅使用位于我的 Pi 上的数据执行另一个 python 脚本。当我从终端运行我的 PHP 脚本时:
sudo php setalarm.php "10 20 1,2,3"
它按预期运行,但是在单击 HTML 页面上的按钮时,没有任何反应。我已验证“包”变量包含正确的数据,但我无法看到 JQuery 的结果。
我有以下问题:
- 如果我唯一的愿望是将“包”(请参阅 HTML 文件片段 - 消息 Javascript,下面的第 2 行或上面命令中的第二个参数)作为命令行参数发送,以从我的 HTML 页面执行 python 脚本,这是正确的方法吗?如果没有,我该如何执行这样的任务?
- 有没有办法从 HTML 页面调试和查看我的外部 PHP 文件?我正在使用 IE 的调试工具,如果我在我的 jQuery 之前设置一个断点并进入下一行,我无法查看 PHP 脚本,只是一个空白的返回结果。
- 如果我尝试的方法是一个很好的方法,您是否发现代码有任何明显的错误或问题?
编辑 - 新 PHP 脚本
<?php
echo "Package is: " . $_GET['package'];
system("sudo python /home/pi/Alarm/change_alarm.py {$_GET['package']}", $ret_val);
?>
HTML 文件片段 - 按钮
<div class="grid8 a-right">
<form method="post"> </form>
<button id="submitButton" type="submit" onclick="message()"> SET</button>
</div>
HTML 文件片段 - 消息 Javascript
alert("Alarm set for " + hour + ":" + minute + " on " + message);
package = hour + " " + minute + " " + list;
$.ajax({
method: "GET",
url: "setalarm.php",
data: { package: package }
})
.done(function( msg ) {
alert(msg);
});
非常感谢大家的帮助!再次,如果我在这篇文章中犯了任何错误,我深表歉意。另外,如前所述,我对 Web 开发非常陌生,所以这可能是一个非常愚蠢的错误。如果确实如此,我很抱歉!
【问题讨论】:
-
如果将数组值放在双引号字符串中,则必须将其用大括号括起来,例如
system("sudo python /home/pi/Alarm/change_alarm.py {$argv[1]}", $ret_val); -
AJAX 参数不在
$argv中。使用$_GET['package'] -
感谢您的及时回复! @Barmar 只是为了确保我理解,您是否建议我将 PHP 文件中的 "$argv[1]" 更改为 "$_GET['package']" ?还是我误解了你?再次感谢!
-
@clark173 你传递数据:
data: { package: package },因此在 PHP 中,它将在$_GET全局中,在他们索引“包”下。所以是的,要获得该值,请在setalarm.php中调用$_GET['package'] -
感谢您的澄清。不幸的是,我仍然不相信 PHP 脚本正在执行,因为我添加了一个简单的行,将输入写入 PHP 第一行的文本文件。有什么方法可以查看 PHP 脚本是否正在执行或是否有任何错误?
标签: javascript php jquery html apache2