我在接收AJAX请求的PHP switch语句时遇到问题,所以我想提供一些信息,然后提出我的问题:
首先,我已经在这里和其他地方看了几十个答案,但没有成功解决这个问题。我最近在家用服务器上从PHP5升级到PHP7,因为我将操作系统从Ubuntu 14.04升级到Ubuntu 16.04.2(仅限命令行安装)。我的HTML / jQuery / PHP / Bash曾经很好地协同工作,但现在似乎我的新javascript和PHP之间存在脱节。 请注意:我不再使用jQuery了,不再为此项目使用它了!
以下是我测试的内容:
你有什么想法让我尝试做这项工作吗?我想给几个按钮提供不同的ID,以便最终从服务器中获得不同的响应。
提前致谢!
这是我的基本HTML文件包含的内容:
function buttonSelect(ButtonName){
var URLtoSend = "controller.php";
var xhttp = new XMLHttpRequest();
xhttp.open("POST", URLtoSend, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("action= " + ButtonName);
alert("Sending this data: " + ButtonName);
}
这是被调用的javascript文件:
<?php
if (isset($_POST["action"])) {
$javacomm = $_POST["action"];
} else {
break;
}
switch($javacomm){
case "lights":
$output=shell_exec("/var/www/scriptfiles/Button5 2>&1");
break;
case "lightsoff":
echo "lights are going out\n";
break;
default:
echo "Bad data!";
}
function lights() {
$output = shell_exec("/var/www/scriptfiles/Button5 2>&1");
exit;
?>
最后,这是接收POST请求的PHP:
{{1}}
答案 0 :(得分:0)
您在代码中遇到了多个问题
xhttp.send
xhttp.setRequestHeader(&#34; Content-type&#34;,&#34; application / x-www-form-urlencoded&#34;);
您没有向控制器发送任何数据,您的控制器需要发布名称操作,因此您必须发送数据xhttp.send("action= " + ButtonName
)
controller.php
中忘记关闭功能指示灯{}
不是它的工作