Ich habe die folgende Konfiguration: Zwei lokale Domänen 192.168.30.1 -> Webserver mit den JSON-Daten und 169.254.168.105: 3000, wo ich mit den Daten arbeiten möchte.Javascript JSON-Daten von Url über Jquery
Der Webserver zeigt die Daten via PHP an und Sie müssen authentifiziert werden, um die Daten zu sehen. So sieht die URL wie folgt aus: „http://192.168.30.1/rest/activity14?auth_username=username&auth_password=password“
Und wenn ich dies in einem Browser eingeben eine folgende Ausgabe:
{
people: [
{
id: "58107d10ad910",
name: "name"
}
],
documents: [
{
document_id: "5811f9b306216",
name: "document1"
}
]
}
Ich muss mit dieser auf der anderen Domäne arbeiten. Also habe ich versucht, die Daten über jQuery Ajax zu bekommen, aber es scheint, dass ich es nicht bekommen kann, egal was. Ich versuchte, den folgende ajax Anruf:
$.ajax({
type: "GET",
url: $url,
dataType: 'json',
success: function(data) {
console.log("success");
},
error: function(e) {
console.log("Error: " + e);
}
});
, die in der Konsole zu einem Fehler führt ("Fehler: [object Object]").
Also habe ich mit verschiedenen Ansätzen versucht. Ich versuchte getJSON:
$.getJSON($url, function(data) {
console.log("success");
}).error(function(e) {
console.log(e);
});
die nicht einmal eine Fehlermeldung gab.
Ich habe auch über Jsonp gelesen und es für domainübergreifende json Anrufe verwenden. Der folgende Ansatz
function logResults(json) {
console.log("json" + json);
}
$.ajax({
url: $url + "callback=logResults?",
dataType: "jsonp",
jsonpCallback: "logResults",
error: function(e) {
console.log("Error: " + e);
}
});
, die auch nicht funktioniert. Im deloper Tool Netzwerk-Registerkarte fand ich folgende über den JSONP Anruf (Status: gestempelt):
General:
Request URL:http://192.168.30.1/rest/activity14? auth_username=kusername&auth_password=password&callback=logResults?&callback=logResults&_=1478083606031
Request Headers:
Provisional headers are shown
Referer:http://169.254.168.105:3000/
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36
Query String Parameters:
auth_username:username
auth_password:password
callback:logResults?
callback:logResults
_:1478083606031
ich nicht wirklich diese interpretieren kann, aber vielleicht hilft es, mein Problem zu finden.
Was wäre der richtige Ansatz für meinen speziellen Fall und wenn ich schon auf dem richtigen Weg wäre, was habe ich am Ende falsch gemacht?
Edit:
Hier ist die Ausgabe im DevTools Registerkarte Netzwerk für die normale JSON Anfrage (nicht die JSONP Anfrage):
General:
Request URL:https://rippleapi.herokuapp.com/xhr_proxy?tinyhippos_apikey=ABC&tinyhippos_rurl=http%3A//192.168.33.10/rest/activity14%3Fauth_username%3Dusername%26auth_password%3Dpassword
Request Headers:
Provisional headers are shown
Access-Control-Request-Headers:x-ripple-user-agent
Access-Control-Request-Method:GET
Origin:http://169.254.168.105:3000
Referer:http://169.254.168.105:3000/
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36
Query String Parameters:
tinyhippos_apikey:ABC
tinyhippos_rurl:http://192.168.33.10/rest/activity14?auth_username=username&auth_password=password
Die 'getJSON'-Version gibt keinen Fehler, weil die Versprechen Version von * Fehler * ist' fail' Methode, nicht 'Fehler'. Versuchen Sie auch, das 'e' selbst zu" konsolen ". Verbinden Sie es nicht mit" Error: "'. Ich meine etwas wie 'console.log (" Error ", e)' würde es tun. Dann können Sie das Fehlerobjekt in der Konsole überprüfen und eine bessere Vorstellung davon haben, was passiert. –
@kk_, du hast gesagt, dass wenn du die erste Methode von 'AJAX' verwendest, du' Error: [object Object] 'bekommst. Das heißt, Sie reagieren auf den Fehlerrückruf. Dann bedeutet das wahrscheinlich, dass etwas mit dem serverseitigen Code nicht stimmt. – Ionut
@ ZoltánTamási Ich habe den Fehler console.log geändert und die Ausgabe ist "Objekt {readyState: 0, responseText:" ", Status: 0, statusText:" Fehler "}" was nicht wirklich hilft, oder? –