【问题标题】:Calling external php script from html page从 html 页面调用外部 php 脚本
【发布时间】: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 的结果。

我有以下问题:

  1. 如果我唯一的愿望是将“包”(请参阅​​ HTML 文件片段 - 消息 Javascript,下面的第 2 行或上面命令中的第二个参数)作为命令行参数发送,以从我的 HTML 页面执行 python 脚本,这是正确的方法吗?如果没有,我该如何执行这样的任务?
  2. 有没有办法从 HTML 页面调试和查看我的外部 PHP 文件?我正在使用 IE 的调试工具,如果我在我的 jQuery 之前设置一个断点并进入下一行,我无法查看 PHP 脚本,只是一个空白的返回结果。
  3. 如果我尝试的方法是一个很好的方法,您是否发现代码有任何明显的错误或问题?

编辑 - 新 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


【解决方案1】:

为了解决这个问题,我不得不对我的网络服务器进行一些更改。首先,我在/var/log/apache2/error.log 发现的错误日志中注意到它缺少一个图标,所以我使用 PhotoShop 创建了一个简单的图标。其次,我将我的 apache2 用户帐户 www-data 添加到 sudo 并授予它所有权限。第三,我将我的 python 脚本移动到我的网络服务器所在的/var/www/ 文件夹,并相应地更新了 php 脚本。以上三个结合起来解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 2011-10-12
    • 2022-11-10
    • 2016-02-20
    • 2021-12-06
    • 2011-09-12
    • 2011-08-13
    相关资源
    最近更新 更多