JQuery-JSON-Aufrufe an PHP WebService führen immer einen "Fehler" -Rückruf aus
Ich habe jetzt Kopfschmerzen, da ich den ganzen Tag über dieses Problem habe und es immer noch nicht beheben kann. Ich habe mich stundenlang bei Google und StackOverflow umgesehen, viele Methoden ausprobiert (einschließlich des Wechsels von JSON zu JSONP, Überprüfen von Headern auf PHP, Localhost-Tests), Freunde gefragt usw., und ich stecke immer noch fest. Vielleicht ist es nur ein Detail, ich weiß es nicht.
Ich arbeite an einer mobilen Android-App und dafür habe ich einen PHP-Webservice auf einem Hosting (z. B. example.com), der einwandfrei funktioniert, da ich ihn mit einem PHP-WS-JSON-Client getestet habe. Problem ist, dass ich dieses WS jetzt von einer JS-Datei auf meinem Computer aus mit jQuery, JSON und Ajax aufrufe und die folgende Antwort von der Debugger-Konsole von Google Chrome erhalte:
readyState: 4statusText: "OK"responseText: (was ich brauche, keine Fehler)Aber auf die Antwort vom Server,Ich erhalte immer den Fehler-Rückruf, niemals den Erfolg. Ich habe gelesen, dass der Server JSON nicht richtig analysieren konnte, aber ich weiß es nicht genau.
Ich überlasse dir meinen Code.
Aus CLIENT.JS:
$.ajax({
type: "POST",
crossDomain: true,
contentType: "application/json utf-8",
dataType: "json",
url: "http://www.example.com/ws/webservice.php/" + methodName,
data: JSON.stringify(window.parameterArray),
success: function (response)
{
alert('Success!');
window.resultVar = "Success! " + response;
console.log(response);
},
error: function (response)
{
alert('Error');
window.resultVar = "Error: " + response;
console.log(response);
}
});
Aus SERVER.PHP:
<?php
header('Access-Control-Allow-Origin: *'); //I have also tried the * wildcard and get the same response
header("Access-Control-Allow-Credentials: true");
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description');
header('Content-type: application/json; charset=utf-8');
require_once "mobilefuncts.php";
$methodName = str_replace($_SERVER["SCRIPT_NAME"]."/", "", $_SERVER["REQUEST_URI"]);
if (isset($methodName))
{
$param = (array)json_decode($HTTP_RAW_POST_DATA);
$access = new MobileAccess(); //From mobilefuncts.php
$result = call_user_func_array(array($access,$methodName), $param); //Calls the method
echo json_encode($result);
}
?>
Weiß jemand, was getan werden kann? Vielleicht ist das Problem, wie ich bereits sagte, nur ein Detail. Ich weiß es nicht wirklich, ich bin ein bisschen neu in dieser Art von Dingen.
Danke im Voraus!
AKTUALISIEREN:
Ich habe gerade festgestellt, dass die Chrome-Konsole mir Folgendes sagt:
GET http://localhost:81/.../cordova_plugins.json 404 (Not Found)
Könnte es die Ursache des Problems sein?
UPDATE 2:
Schau mal, ich habe eine Ahnung. Ich fügte der Fehlerfunktion weitere Parameter hinzu und bekam folgendes Ergebnis:
(Die Fehleränderung ist vonFunktion (Rückmeldung) zuFunktion (jqXHR, textStatus, errorThrown))
jqXHR.responseText: [an array with the info I'm asking]
errorThrown: "SyntaxError: Unexpected token"