В настоящее время я работаю над приложением телеуправления, в котором я пытаюсь отправить координаты джойстика с Javascript на PHP. Тем не менее, я никогда не могу получить доступ к данным через PHP-файл, так как получаю ошибку Undefined Index.Почему я получаю ошибку Undefined Index при использовании AJAX/PHP?
Я знаю, что этот вопрос был рассмотрен много раз, но я провел прошлую неделю, проходя через форумы и Google, и ни одно из решений, которые я пробовал, не сработало, поэтому я был бы признателен, если бы кто-нибудь мог взглянуть в моем коде, чтобы узнать, есть ли у меня какое-то фундаментальное недоразумение или проблема с конкретными приложениями.
EDIT: Я забыл упомянуть об этом ранее, но я пробовал пример кода PHP/AJAX, который другие опубликовали в Интернете, и запуск этого кода тоже не работает, что заставляет меня думать, что, возможно, это проблема с моим конфигурации сервера.
Мой код: (только включает файлы, которые, как я считаю, имеют отношение к проблеме; , Я использую 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 в строке 2
Массив PHP $ _POST кажется пустым.
Возможно полезное сообщение Browser отладочные:
Как я уже говорил, я смотрел на форумах на прошлой неделе, так что некоторые действия, я пытался, чтобы исправить проблема заключалась в изменении форматирования, изменении кеша и асинхронных атрибутов в методе ajax, замените вызов ajax вызовом $ .post или XMLHttpRequest, заменив переменную JavaScript номером в вызове ajax и некоторыми другими методами, которые я забыл ,
Если массив '$ _POST' пуст, как вы получите сообщение, показанное на вашем снимке экрана (т."x value is ...")? – showdev
Что произойдет, если вы 'var_dump()' '$ _POST' переменная в начале? Мне интересно, если 0.00684 ... округляется до нуля, а затем «фальшиво» в вашей 'пустой()' проверке. –
Как выглядит запрос на сервер при возникновении этой ошибки? Вы показываете успешный звонок. – epascarello