我刚刚在我的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°</button><br />
<button button='button' onclick='loadDoc(-10)'>Move Right 10°</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。任何洞察我做错了什么或指出我的想法?
答案 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°</button><br />
<button button='button' onclick='loadDoc(-10)'>Move Right 10°</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;
?>