JQuery AJAX JSON Header generieren
sho
- javascript
Hallöchen,
möchte Userdaten per Ajax an den Server schicken. Nach eingehendem JQuery-Ajax-Doku
Studium bin ich von getJSON zu folgender Version gekommen, die immerhin auf den Server zugreift,
aber einige Fehler hat:
$.ajax({
accepts:'application/json',
type:'GET',
cache:true,
url: 'http://111.222.333.4:80/testseite/',
dataType: 'jsonp',
status:status,
beforeSend:function (xhr) {
xhr.setRequestHeader('Authorization', 'Basic '+base64.encode('user:passwort'));
},
username:'user',
password:'passwort',
success: function(data){
alert('ping');
}
});
SOLL-HEADER
GET /testseite/ HTTP/1.1\r\n
Accept: application/json\r\n
Accept-Charset:utf-8\r\n
Connection: Keep-Alive\r\n
X-clientinfo: stresstestclient\r\n
X-id: 012345678901\r\n
Host: 111.222.333.4:80
Authorization: Basic c2Fob2ZAY2NkZXYudm06 (==base64 codierter user:passwort)
IST-HEADER
GET /testseite/callback=?jquery12345678_12345678_1234
Accept: */*
Accept-Charset:utf-8\r\n
Connection: Keep-Alive\r\n
X-clientinfo: (bisher nichts, sollte über headers angepasst werden, aber wie?)
X-id: (bisher nichts, sollte über headers angepasst werden, aber wie?)
Host: 111.222.333.4:80
Authorization: Basic
Fehler also:
-die Authentifizierung klappt nicht! Ich bekomme immer eine Manuelle Passworteingabe angezeigt, die Daten werden nicht übergeben
-das callback hinter der URL..was ist das bitte mit jquery plus zahlenkette?
-wieso wird bei Accept nicht application/json angezeigt? Wenn man getJSON nimmt, klappt es doch auch (jsonp muss ich nehmen, sonst kann ich intern gar nicht zugreifen)
Wo sind meine Fehler beim Übergeben der Daten??
Danke im Voraus
Hi,
X-clientinfo: (bisher nichts, sollte über headers angepasst werden, aber wie?)
X-id: (bisher nichts, sollte über headers angepasst werden, aber wie?)
In dem du entsprechendes in den settings angibst?
-die Authentifizierung klappt nicht! Ich bekomme immer eine Manuelle Passworteingabe angezeigt, die Daten werden nicht übergeben
Bastle dir das nicht selber, sondern setze die settings username und password.
-das callback hinter der URL..was ist das bitte mit jquery plus zahlenkette?
Vermutlich ein automatisch von jQuery angefügter Zufallswert, um unerwünschtes Caching zu verhindern.
-wieso wird bei Accept nicht application/json angezeigt?
Weil nichts und niemand etwas unternommen hat, um die Default-Angabe des Browsers zu überschreiben?
Wo sind meine Fehler beim Übergeben der Daten??
Sieht nach generell zu wenig Ahnung von den Grundlagen der beteiligten Techniken aus ...
MfG ChrisB
Hi,
X-clientinfo: (bisher nichts, sollte über headers angepasst werden, aber wie?)
X-id: (bisher nichts, sollte über headers angepasst werden, aber wie?)In dem du entsprechendes in den settings angibst?
-die Authentifizierung klappt nicht! Ich bekomme immer eine Manuelle Passworteingabe angezeigt, die Daten werden nicht übergeben
Bastle dir das nicht selber, sondern setze die settings username und password.
du meinst per username:'user', password:'passwort' ? das funktioniert ja nicht. ich weiß nicht, wie ich das übergeben soll.
-das callback hinter der URL..was ist das bitte mit jquery plus zahlenkette?
Vermutlich ein automatisch von jQuery angefügter Zufallswert, um unerwünschtes Caching zu verhindern.
OK
-wieso wird bei Accept nicht application/json angezeigt?
Weil nichts und niemand etwas unternommen hat, um die Default-Angabe des Browsers zu überschreiben?
Wie würde ich das tun müssen? ich hab gelesen, dass es reicht, dataType:json dafür zu benutzen. wenn ich getJSON benutze, wird zB automatisch application/json akzeptiert (aber dann weiß ich noch weniger, wie ich den request zusammengebaut bekomme..
Wo sind meine Fehler beim Übergeben der Daten??
Sieht nach generell zu wenig Ahnung von den Grundlagen der beteiligten Techniken aus ...
das ist der Fall, deswegen frage ich nach (ich hab ja auch nicht gesagt, dass ich ahnung hab) :-)
kann noch jmd. helfen?
Hi,
Bastle dir das nicht selber, sondern setze die settings username und password.
du meinst per username:'user', password:'passwort' ? das funktioniert ja nicht. ich weiß nicht, wie ich das übergeben soll.
Du sollst es gar nicht selber übergeben, in dem du dir irgendwelche Header zusammenbastelst, sondern lediglich die Werte in den Settings angeben, und jQuery sich um den Rest kümmern lassen.
-das callback hinter der URL..was ist das bitte mit jquery plus zahlenkette?
Vermutlich ein automatisch von jQuery angefügter Zufallswert, um unerwünschtes Caching zu verhindern.
OK
Steht übrigens auch in der Doku.
Weil nichts und niemand etwas unternommen hat, um die Default-Angabe des Browsers zu überschreiben?
Wie würde ich das tun müssen?
Entsprechenden Header setzen?
ich hab gelesen, dass es reicht, dataType:json dafür zu benutzen.
Wo hast du das gelesen?
MfG ChrisB
Hi,
Bastle dir das nicht selber, sondern setze die settings username und password.
du meinst per username:'user', password:'passwort' ? das funktioniert ja nicht. ich weiß nicht, wie ich das übergeben soll.Du sollst es gar nicht selber übergeben, in dem du dir irgendwelche Header zusammenbastelst, sondern lediglich die Werte in den Settings angeben, und jQuery sich um den Rest kümmern lassen.
Das würde ich so gerne, aber ich muss den Header wie den soll-Header 1:1 haben und weiß eben nicht, wie ich das realisieren soll mit dem request, das war die Frage.
-das callback hinter der URL..was ist das bitte mit jquery plus zahlenkette?
...
Steht übrigens auch in der Doku.
Danke für den Hinweis. Du hättest noch schreiben müssen, dass ich nicht richtig lesen kann :-)
Weil nichts und niemand etwas unternommen hat, um die Default-Angabe des Browsers zu überschreiben?
Wie würde ich das tun müssen?Entsprechenden Header setzen?
Wie gesagt: Wenn ich wüsste wie ich den Header setze, hätte ich nicht gefragt. Es ging eher um das WIE ...
ich hab gelesen, dass es reicht, dataType:json dafür zu benutzen.
Wo hast du das gelesen?
ehm, in diversen Foren und in der AJAX-Doku (wenn richtig verstanden), steht bei getJSON, dass der request äquivalent ist zu dem ajax-request mit dataType:"json"
Mittlerweile bin ich drauf gekommen, dass es mit dem Access-Allow-Origin Issue zu tun haben könnte (weil Skript auf anderer Domain als Response-Skript. Der Chrome meldet diesen Fehler, IF und FF führen den Request gar nicht aus, außer, ich versuche es mit getJSON, aber dann weiß ich erst recht nicht, wie die Header Parameter zu setzen sind. Der Request sieht jetzt -wie Du sos schön sagtest- "gebastelt" aus:
$.ajax({
type:"GET",
cache:true,
url: "http://11.22.33.12:33/testseite/",
contentType:"application/json",
dataType: "json",
data:{},
xhrFields:{
withCredentials: true
},
status:status,
beforeSend:function (xhr){
xhr.setRequestHeader('Authorization', 'Basic '+base64.encode('user:passwort'));
xhr.withCredentials = true;
xhr.overrideMimeType("application/json");
},
dataFilter: function(data) {
if (typeof (JSON) !== 'undefined' &&
typeof (JSON.parse) === 'function')
return JSON.parse(data);
else
return eval('(' + data + ')');
},
username:"username",
password:"passwort",
success: function(){
alert("jippi");
}
//async: false
});
MfG ChrisB
Freundlichst
???? Ich freu mich über Feedback