Ajax不适用于新的Apache服务器

时间:2015-10-15 01:17:46

标签: php ajax apache

我刚刚在我的Raspberry Pi上设置了一个新的Apache2服务器,但我似乎无法运行Ajax。我认为我的代码可能有问题,但这就是我在这里发布的原因。

这是我的HTML:

<html>
<head>
</head>
<body>
    <div id='rotation'>Current Degrees: </div>
    <br />
    <br />
    <form action='.' method='get'>
        <button button='button' onclick='loadDoc(10)'>Move Left 10&#176</button><br />
        <button button='button' onclick='loadDoc(-10)'>Move Right 10&#176</button><br />
    </form>

    <script>
        function loadDoc(rot) {
            var xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function() {
                if (xhttp.readyState == 4 && xhttp.status == 200) {
                    document.getElementById('rotation').innerHTML = "Changed Degrees: " + xhttp.responseText;
                }
            }
            xhttp.open("GET", "run_servo.php?d=10",true);
            xhttp.send();
        }
    </script>
</body>
</html>

这是我的PHP:

<?php
    $degrees = $_REQUEST['d'];
    echo $degrees;
?>

当我运行页面时,我没有收到任何错误,至少没有我看到的错误,但是当我点击按钮时没有任何反应。 我检查了Apache日志,我没有看到任何问题。为了使其正常工作,服务器上的所有权限都设置为777。任何洞察我做错了什么或指出我的想法?

1 个答案:

答案 0 :(得分:0)

我已经弄清楚了。菜鸟和AJAX的新手错误。在上面的HTML代码中,我在代码中留下了form数据。

以下是最终正在运行的HTML代码:

<html>
<head>
</head>
<body>
    <div id='rotation'>Current Degrees: </div>
    <br />
    <br />
        <button button='button' onclick='loadDoc(10)'>Move Left 10&#176</button><br />
        <button button='button' onclick='loadDoc(-10)'>Move Right 10&#176</button><br />

    <script>
        function loadDoc(rot) {
            var xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function() {
                if (xhttp.readyState == 4 && xhttp.status == 200) {
                    document.getElementById('rotation').innerHTML = "Changed Degrees: " + xhttp.responseText;
                }
            }
            xhttp.open("GET", "run_servo.php?d=10",true);
            xhttp.send();
        }
    </script>
</body>
</html>

@Jesse也提醒我关于Firebug中的控制台登录。我获得了304状态。通过在我从JavaScript调用的php文件中添加header("Cache-Control: no-cache, must-revalidate");来解决这个问题。

最终正在使用的PHP代码:

<?php
    header("Cache-Control: no-cache, must-revalidate");
    $degrees = $_REQUEST['d'];
    echo $degrees;
?>