Ich versuche, Daten zu senden und empfangen, die von einem input
zu PHP durch eine XHR Anfrage. Es ist mir erfolgreich gelungen, eine Verbindung zu PHP ohne Daten als Parameter innerhalb der send
Methode zu erstellen.xmlhttprequest ähnlich Ajax
Wenn ich es jedoch versuche, erhalte ich den Fehler. Hier
ist das JavaScript (aktualisiert!):
function serialize(obj, prefix) {
var str = [],
p;
for (p in obj) {
if (obj.hasOwnProperty(p)) {
var k = prefix ? prefix + "[" + p + "]" : p,
v = obj[p];
str.push((v !== null && typeof v === "object") ?
serialize(v, k) :
encodeURIComponent(k) + "=" + encodeURIComponent(v));
}
}
return str.join("&");
}
function xhrRequest(data, method, url, callback){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
if(xhr.status == 200){
callback(xhr.responseText);
} else {
callback(null);
console.log("XHR Request Failed");
}
}
}
xhr.open(method, url, true);
xhr.send(JSON.stringify(data));
}
// Calling xhrRequest
xhrRequest({ valueA: input.value }, "POST", "post.php", function(data){
alert(data);
});
PHP nur ein Echo des Wertes ist, um sicherzustellen, dass es verabschiedet wurde (aktualisiert!):
if(isset($_POST["value"])){
echo $_POST["value"];
} else {
echo "no value set";
}
Ich bin mir bewusst, dass Sie Parameter wie diese "valueA=" + input.value
innerhalb der send
-Methode übergeben können, aber es scheint wirklich unnötig (vor allem, wenn es mehrere Werte gibt).
Also, wie würde ich das zum Funktionieren bringen? Was sind einige Verbesserungen/Änderungen, die ich vielleicht kann? zu machen.
Entschuldigt, wenn es sehr offensichtlich scheint, aber ich lernte jQuery vor Vanille JavaScript, leider. Also versuche ich den Vanille-Weg zu lernen und bin daran gewöhnt, wie jQuery funktioniert.
Dank! :)
EDIT:
Mit Technik des @ adeneo in der Tat halb Arbeit! Mit dem aktualisierten PHP erhalte ich jedoch immer "No value set"
. Warum wird der Wert nicht übergeben? auch wenn ich "valueA=" + input.value
verwende?
Warum sagen Sie uns nicht, was der Fehler war? – Connum
@Connum Entschuldigung, gemeint ** der Fehler **! Entschuldigung für die Verwirrung:/Der Fehler btw ist '" XHR Request Failed "' –