Ich verwende ein Greasemonkey-Skript, um Daten aus dem RSS-Feed http://www.instapaper.com/folder/48337/rss/11185/QBV0RZfH4KBO7GwgrR3D8b7sv90 zu ziehen und es in eine Seite mit jQuery einzufügen. Die Adresse gibt eine gültige RSS zurück, aber wenn Greasemonkey einen Ajax-Aufruf auslöst (siehe unten), gibt es immer eine leere Anfrage zurück und löst den Fehler-Callback aus. Was vermisse ich bei meinem Ajax-Anruf?jQuery.ajax Call gibt einen leeren Datencontainer zurück, aber die rohe URL funktioniert
$.ajax({
url: "http://www.instapaper.com/folder/48337/rss/11185/QBV0RZfH4KBO7GwgrR3D8b7sv90",
dataType: "xml",
data: "",
type: "GET",
success: function (data){
var classString = "";
$("item",data).each(function (i) {
classString = classString + "<li><a href='" + $("link",this).text() + "'>" + $("title",this).text() + "</a></li>";
});
var message = "<div id='classes'><h2>Class Links</h2><ul>" + classString + "</ul></div>";
$("#sidelinks").prepend(message);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
$("#sidelinks").prepend("<div id='classes'><h2>Class Links</h2><p>There was an error accessing class link information.</p></div>");
}
});
Ich bin nicht ganz sicher, ob dies ist es, aber mein jQuery.ajax
Anruf scheint als eine andere Art von HTTP-Aufruf zu erteilen, wenn ich einfach die RSS-URL in meine Adressleiste einfügen. Obwohl ich festlege, dass die Anfrage ein "GET" sein soll, scheint jQuery eine "OPTIONS" -Anfrage zu senden. Unten ist die Ausgabe, die mit Live-HTTP-Headern für den von meiner Ajax-Anforderung ausgegebenen Anruf und für die Arbeitsanforderung durch Eingabe der URL in die Adressleiste abgefangen wird.
Dieser löst den Ajax-Fehlerrückruf mit einer leeren (?) Antwort aus Objekt:
http://www.instapaper.com/folder/48337/rss/11185/QBV0RZfH4KBO7GwgrR3D8b7sv90
OPTIONS /folder/48337/rss/11185/QBV0RZfH4KBO7GwgrR3D8b7sv90 HTTP/1.1
Host: www.instapaper.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Origin: http://home.bju.edu
Access-Control-Request-Method: GET
Access-Control-Request-Headers: x-requested-with
HTTP/1.x 200 OK
Date: Thu, 27 Aug 2009 15:16:53 GMT
Server: Apache
P3P: CP="ALL ADM DEV PSAi COM OUR OTRo STP IND ONL"
Vary: Accept-Encoding
Content-Type: text/xml; charset=utf-8
Content-Length: 1210
Age: 0
Dies zeigt erfolgreich Daten im Browser (was passiert, wenn ich URL in der Adressleiste Drop):
http://www.instapaper.com/folder/48337/rss/11185/QBV0RZfH4KBO7GwgrR3D8b7sv90
GET /folder/48337/rss/11185/QBV0RZfH4KBO7GwgrR3D8b7sv90 HTTP/1.1
Host: www.instapaper.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
HTTP/1.x 200 OK
Date: Thu, 27 Aug 2009 15:18:04 GMT
Server: Apache
P3P: CP="ALL ADM DEV PSAi COM OUR OTRo STP IND ONL"
Vary: Accept-Encoding
Content-Type: text/xml; charset=utf-8
Content-Length: 1210
Age: 0
Nun, ich versucht, aber kein Erfolg . Irgendwelche anderen Ideen da draußen? –
Was genau hast du probiert? "{}" würde nicht für XML funktionieren, nehme ich an ... vielleicht nur eine leere Zeichenfolge? –
Ich habe versucht "{}" und leere Zeichenfolge "" (das ist, was ich in der oben bearbeiteten Frage habe). Ich bin mir nicht sicher, was passiert, es sei denn, es hat mit dem Unterschied zwischen HTTP GET und HTTP OPTIONS zu tun. –