我目前正在研究一個遙控應用程序,我試圖從Javascript發送操縱桿座標到PHP。但是,我無法通過PHP文件訪問數據,因爲我收到了未定義的索引錯誤。爲什麼在使用AJAX/PHP時收到Undefined Index錯誤?
我知道這個問題已經解決了很多次,但是我已經花了一個星期的時間去討論論壇和谷歌,而且我嘗試過的解決方案都沒有工作,所以如果有人可以看一看,我將不勝感激。在我的代碼中查看是否存在一些根本性的誤解或特定於應用程序的問題。
編輯:我忘了提到這一點,但我曾嘗試過其他人在網上發佈的一些示例PHP/AJAX代碼,並且運行該代碼也不起作用,這使我認爲這可能是我的問題服務器配置。
我的代碼:(只包括我認爲與問題相關的文件;如果您希望看到項目中的其他文件,請通知我。) JavaScript和PHP文件位於相同的目錄中。我正在使用XAMPP。
joystick.js(包含AJAX調用)
var hasGP = false;
var repGP;
// Joystick State Variables
var triggerPressed;
var x_value;
var y_value;
var z_value;
var t_value;
function canGame()
{
return "getGamepads" in navigator;
}
function reportOnGamepad()
{
// Display the gamepad's ID.
var gp = navigator.getGamepads()[0];
var html = "";
html += "<u>ID</u>: " + gp.id + "<br>";
// Display the status of the x-axis.
x_value = gp.axes[0];
html += "<u>x-axis</u>: " + x_value + "<br>";
// Display the status of the y-axis.
trigger_pressed = gp.buttons[0].pressed;
y_value = gp.axes[1];
if (trigger_pressed)
{
html += "<u>Pitch angle</u>: " + y_value + "<br>";
}
else
{
html += "<u>y-axis</u>: " + y_value + "<br>";
}
// Display the status of the z-axis.
z_value = gp.axes[3];
html += "<u>z-axis</u>: " + z_value + "<br>";
// Display the status of the t-axis.
t_value = gp.axes[2];
html += "<u>Roll angle</u>: " + t_value + "<br>";
$("#gamepadDisplay").html(html);
$.ajax({ url: 'ajax.php',
type: 'POST',
data: {x:x_value},
success: function(data)
{
console.log("x_value " + data + " has been sent to the server.");
}
});
}
$(document).ready(function()
{
if(canGame())
{
var prompt = "To begin using your gamepad, connect it and press any button!";
$("#gamepadPrompt").text(prompt);
$(window).on("gamepadconnected", function()
{
hasGP = true;
$("#gamepadPrompt").html("<b>The gamepad has been successfully connected.</b><br><br>");
console.log("connection event");
repGP = window.setInterval(reportOnGamepad,100);
});
$(window).on("gamepaddisconnected", function()
{
console.log("disconnection event");
$("#gamepadPrompt").text(prompt);
window.clearInterval(repGP);
});
// Set up an interval for Chrome
var checkGP = window.setInterval(function()
{
console.log('checkGP');
if(navigator.getGamepads()[0])
{
if(!hasGP) $(window).trigger("gamepadconnected");
window.clearInterval(checkGP);
}
}, 500);
}
});
ajax.php(文件到的Javascript數據應發送)
<?php
$temp = $_POST['x'];
if(isset($temp) && !empty($temp))
{
echo "x value is ". $temp ."!"; // Success Message
}
?>
錯誤消息:
注意:未定義的索引:x在C:\ xampp \ htd ocs \ TeachMoverInterface \ ajax.php on line 2
PHP $ _POST數組似乎是空的。
可能有用的瀏覽器調試信息:
正如我所說的,我一直在尋找的論壇在過去的一週,所以有些動作我試圖以修復問題在於更改ajax方法的格式,更改緩存和異步屬性,將ajax調用替換爲$ .post調用或XMLHttpRequest,用ajax調用中的數字替換JavaScript變量,以及其他已忘記的方法。
如果'$ _POST'數組爲空,那麼如何獲取屏幕截圖中顯示的消息(即,「x值是...」)? – showdev
如果你在起始處var_dump()'$ _POST'變量會發生什麼?我想知道是否0.00684 ...被四捨五入爲零,隨後在'empty()'檢查中出現「falsy」。 –
發生錯誤時,對服務器的請求是什麼樣的?您正在顯示成功的通話。 – epascarello