AJAX请求在PHP switch语句中不起作用

时间:2017-07-16 01:17:54

标签: javascript php ajax

我在接收AJAX请求的PHP switch语句时遇到问题,所以我想提供一些信息,然后提出我的问题:

首先,我已经在这里和其他地方看了几十个答案,但没有成功解决这个问题。我最近在家用服务器上从PHP5升级到PHP7,因为我将操作系统从Ubuntu 14.04升级到Ubuntu 16.04.2(仅限命令行安装)。我的HTML / jQuery / PHP / Bash曾经很好地协同工作,但现在似乎我的新javascript和PHP之间存在脱节。 请注意:我不再使用jQuery了,不再为此项目使用它了!

以下是我测试的内容:

  • 运行bash脚本的PHP代码独立工作(没有switch语句)。我的房间灯亮了。
  • 我使用URI编码,但它似乎没有帮助。
  • javascript" main.js"可以打电话给" controller.php"只需要请求" controller.php"同时OMITTING任何?或变量(再次,我的PHP代码中没有switch语句)。我的房间灯亮了。
  • 单击我的HTML文件中的按钮按预期运行java。

你有什么想法让我尝试做这项工作吗?我想给几个按钮提供不同的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}}

1 个答案:

答案 0 :(得分:0)

您在代码中遇到了多个问题

  1. 您必须在xhttp.send
  2. 之前设置请求标头
      

    xhttp.setRequestHeader(&#34; Content-type&#34;,&#34; application / x-www-form-urlencoded&#34;);

    1. 您没有向控制器发送任何数据,您的控制器需要发布名称操作,因此您必须发送数据xhttp.send("action= " + ButtonName

    2. 您在controller.php中忘记关闭功能指示灯
    3. {}

    4. 不是它的工作