Ich arbeite gerade an einer Telecontrol-Anwendung, in der ich versuche, Joystick-Koordinaten von Javascript zu PHP zu senden. Ich kann jedoch nie auf die Daten über die PHP-Datei zugreifen, da ich einen Undefinierten Indexfehler erhalte.Warum erhalte ich einen Undefinierten Indexfehler bei der Verwendung von AJAX/PHP?
Ich bin mir bewusst, dass diese Frage viele Male angesprochen wurde, aber ich habe die vergangene Woche durchforstet Foren und Google und keine der Lösungen, die ich versucht habe gearbeitet, so würde ich es begrüßen, wenn jemand einen Blick darauf werfen könnte an meinem Code, um zu sehen, ob ich ein grundlegendes Missverständnis oder ein anwendungsspezifisches Problem habe.
EDIT: Ich vergaß, dies früher zu erwähnen, aber ich hatte einige Beispiel PHP/AJAX-Code versucht, die andere online veröffentlicht haben, und die Ausführung dieses Codes hat auch nicht funktioniert, was mich denken, dass dies ein Problem mit meinem ist Serverkonfiguration
Mein Code: (Enthält nur Dateien, die für das Problem relevant sind. Wenn Sie die anderen Dateien im Projekt sehen möchten, lassen Sie es mich wissen.) Die JavaScript- und PHP-Dateien befinden sich im selben Verzeichnis . Ich benutze XAMPP.
joystick.js (enthält Ajax-Aufruf)
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 (Datei, an die Javascript-Daten gesendet werden)
<?php
$temp = $_POST['x'];
if(isset($temp) && !empty($temp))
{
echo "x value is ". $temp ."!"; // Success Message
}
?>
Fehlermeldung:
Hinweis: Undefinierter Index: x in C: \ xampp \ htd ocs \ TeachMoverInterface \ ajax.php auf Leitung 2
Die PHP $ _POST Array erscheint leer zu sein.
Möglicherweise Hilfreiche Browser Debuggen Info:
Wie gesagt, ich habe in der letzten Woche in Foren gesucht, so dass einige der Aktionen habe ich versucht, um zu beheben Das Problem war, die Formatierung zu ändern, Cache und asynchrone Attribute in der Ajax-Methode zu ändern, den Ajax-Aufruf durch einen $ .post-Aufruf oder XMLHttpRequest zu ersetzen, die JavaScript-Variable durch eine Zahl im Ajax-Aufruf zu ersetzen und einige andere Methoden, die ich vergessen habe .
Wenn das '$ _POST'-Array leer ist, wie erhalten Sie die in Ihrem Screenshot angezeigte Nachricht (d. H."x Wert ist ...")? – showdev
Was passiert, wenn Sie am Anfang die '$ _POST'-Variable' var_dump() '' eingeben? Ich frage mich, ob 0.00684 ... auf Null gerundet wird und anschließend "falsy" in Ihrer 'leeren()' Prüfung. –
Wie sieht die Anfrage an den Server aus, wenn dieser Fehler auftritt? Sie zeigen einen erfolgreichen Anruf an. – epascarello