/ / Probleme mit jQuery, ajax und jsonp - javascript, jquery, ajax, json, jsonp

Probleme mit jQuery, ajax und jsonp - javascript, jquery, ajax, json, jsonp

Ich verwende jsonp und ajax, um auf einen Webdienst auf einem anderen Server zuzugreifen. Hier ist die jQuery:

$.ajax({
type: "GET",
url: wsurl + "callback=?",
dataType: "jsonp",
crossDomain: true,
error: function(data) {
console.log("error", data);
},
success: function(data) {
console.log("success", data);
},
complete: function() {
console.log("done");
}
});

Das Problem ist, dass der Fehlerrückruf aufgerufen wird. Es gibt mir diese wunderbar hilfreiche Information:

{
readyState: 4,
status: 200,
statusText: "success"
}

Und hier ist die JSON-Datei, die ich anrufe:

{
"id": 0,
"room_number": "0",
"first_name": "Admin",
"last_name": "Istrator",
"password": "",
"salutation": "Mr.",
"telephone": "",
"email": "",
"description": "admin",
"checkin_date": 915797106000,
"checkout_date": 4071557106000,
"last_login_date": 947333106000,
"active_status": true,
"created_date": 915797106000,
"created_by": 0,
"reference_id": ""
}

Ich habe zuerst versucht, die jQuery-Methode getJSON zu verwenden.mit dem gleichen Ergebnis. Ich dachte, ich würde die Base-Ajax-Methode ausprobieren, da sie ein bisschen mehr Kontrolle hat, aber wie du sehen kannst, kein Glück. Also, merke, was ich falsch mache? Haben Sie eine Idee, warum es einen Fehler gibt und mir einen erfolgreichen Wert für die statusText Eigenschaft gibt?

BEARBEITEN

Okay, ich habe dem Ajax-Aufruf einige Optionen hinzugefügt und den Callback-Parameter von der URL entfernt. Hier ist der neue Ajax-Aufruf:

  $.ajax({
type: "GET",
url: wsurl,
dataType: "jsonp",
crossDomain: true,
error: function(xhr, textStatus, errorThrown) {
console.log("textStatus: " + textStatus);
},
success: function(data) {
console.log("success");
console.log(data);
}
});

Ich bekomme einen neuen Fehler, was gut ist, nehme ich an,aber immer noch nicht funktioniert. Der Unterschied ist, dass der textStatus jetzt "parsererror" ist. Die Konsole wirft auch einen Syntaxfehler in Zeile eins der JSON-Datei:

Uncaught SyntaxError: Unexpected token :

Ideen?

Antworten:

1 für die Antwort № 1

Okay, ein paar Sachen springen auf mich los:

$.ajax({
type: "GET",
#You do not need to append the callback as you have jsonp configured it will  do it
#automatically append the callback=<auto generated name>
url: wsurl,
dataType: "jsonp",
crossDomain: true,
error: function(data) {
console.log("error", data);
},
success: function(data) {
console.log("success", data);
},
complete: function() {
console.log("done");
}
});

Auch Ihre Rückkehr scheint nicht in eine Funktion verpackt zu sein, die für jsonp benötigt wird, um zu arbeiten.

<auto generated name>({ json object })

Die Callback-Funktion wird automatisch von jquery benannt. Sie benötigen also einen Dienst, der einen Rückrufparameter übernimmt und ein JSON-Objekt mit Auffüllung zurückgibt.


0 für die Antwort № 2

Nicht sicher, ob dies das Problem ist, aber Ihre URL ist nicht korrekt. Laut den jQuery-Dokumenten sollte es automatisch den? Callback =? für dich:

http://api.jquery.com/jQuery.ajax/


0 für die Antwort № 3

Entfernen Sie den Callback von der URL und versuchen Sie, Ihren JSON mit etwas wie diesem zu umhüllen (php Beispiel, $ _GET ["Callback"] wird automatisch von jQuery gesetzt):

$_GET["callback"] . "({
"id": 0,
"room_number": "0",
"first_name": "Admin",
"last_name": "Istrator",
"password": "",
"salutation": "Mr.",
"telephone": "",
"email": "",
"description": "admin",
"checkin_date": 915797106000,
"checkout_date": 4071557106000,
"last_login_date": 947333106000,
"active_status": true,
"created_date": 915797106000,
"created_by": 0,
"reference_id": ""
})"