Ich habe die folgende generische Funktion Ajax:PHP kehrt nie Readystate 4 oder Status 200 in Ajax
//run post request
function ajaxPost (divid, parameters, file) {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
alert ("ok")
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
alert ("ready");
alert (xmlhttp.responseText);
divid.innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST", file,true);
//Send the proper header information along with the request
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", parameters.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(parameters);
}
Das Problem ist, dass dieser Abschnitt nicht wie erwartet funktioniert:
xmlhttp.onreadystatechange=function() {
alert ("ok")
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
alert ("ready");
alert (xmlhttp.responseText);
divid.innerHTML=xmlhttp.responseText;
}
}
Im Browser I bekomme mehr "ok" Warnungen wie ich erwartet habe, aber die Anweisungen in der if Anweisung werden niemals ausgelöst. Ich nehme an, dass der php Statusupdates zurückgibt, aber aus irgendeinem Grund keine fertigen Codes zurückgibt. Wie das passieren kann - ich habe keine Ahnung.
Kann mir jemand sagen, warum ich die fertigen Codes nicht bekommen würde?
Die PHP selbst ist nicht das Problem:
<?php
echo "new";
?>
ich die Funktion Eingang getestet (divid, Parameter und Datei), und diese sind in Ordnung. Diese Funktion funktionierte bisher in einem separaten Projekt.
So geht es nur bis Zustand 3? Überprüfen Sie die verschiedenen Werte von 'readyState' ... –
@Felix King hat das gerade getestet. Es erreicht den Zustand 4, aber der Status kehrt unmittelbar danach 404 zurück. – YsoL8
Überprüfen Sie auch 'Status'. Vielleicht bekommst du einen 404. Edit: los gehts. –