Dashboard Widget - merkwürdiges http_request-Objekt
Marco Lehmann
- javascript
Hallo zusammen,
ich probiere mich gerade darin ein AJAX-basiertes Dashboard-Widget zu programmieren. Vielleicht erst einmal der Quelltext:
function performRequest(url, callbackFunction) {
http_request = false;
// Mozilla, Safari, ...
if (window.XMLHttpRequest) {
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) http_request.overrideMimeType("text/xml");
// IE
} else if (window.ActiveXObject) {
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
document.getElementById("searchTerm").value = "XMLHTTP-Error";
return false;
}
http_request.onreadystatechange = callbackFunction;
http_request.open("GET", url, true);
http_request.send(null);
}
function alertContent() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
document.getElementById("output").value = http_request.responseText;
} else {
document.getElementById("output").value = "AJAX-Error:" + http_request.status;
// check http_request object
document.getElementById("output").innerHTML = "";
for (elem in http_request) {
document.getElementById("output").innerHTML += elem + ": " + http_request[elem] + " - ";
}
}
}
}
...
performRequest("http://localhost/widget/search.php?term=" + term, alertContent);
...
Das witzige ist, daß der readyState von http_request zwar 4 ist, der status-Wert aber undefined und somit auch responseText und responseXML unbrauchbar, weil null. Wie kommt das? Wenn ich das Widget im Safari teste, dann läuft es einwandfrei?
Danke im Voraus für jede Hilfe.
Marco
Moin!
ich probiere mich gerade darin ein AJAX-basiertes Dashboard-Widget zu programmieren. Vielleicht erst einmal der Quelltext:
function performRequest(url, callbackFunction) {
http_request = false;
// …// IE
} else if (window.ActiveXObject) {
// …
}
}
Was soll denn die Abfrage für den IE da, Dashboard läuft doch unter Mac OS X mit WebKit (Safari)?
Viele Grüße,
Robert
Moin!
Was soll denn die Abfrage für den IE da, Dashboard läuft doch unter Mac OS X mit WebKit (Safari)?
Viele Grüße,
Robert
Ja okay… das ist ein Überbleibsel des Standard-AJAX-Konstrukts. Das bringt mich ja aber leider bei der Problemlösung nicht weiter.
Marco
Hallo zusammen,
ich konnte mein Problem lösen und hoffe, daß ich mit dieser Antwort vielen die aufwendige und nervenaufreibende Suche erspare. In der Info.plist-Datei müssen folgende beiden booleschen Werte mit Yes gesetzt sein:
AllowFileAccessOutsideOfWidget
AllowNetworkAccess
Ansonsten erfolgt der Aufruf ganz normal mit folgendem Code:
var http_request = null;
function performRequest(url, callbackFunction) {
http_request = new XMLHttpRequest();
http_request.onload = function(e) { callbackFunction(e, http_request); }
http_request.overrideMimeType("text/xml");
http_request.open("GET", url);
http_request.setRequestHeader("Cache-Control", "no-cache");
http_request.send(null);
}
function workWithContent(e, request) {
http_request = null;
...
}
...
performRequest("http://localhost/someData.php?query=test", workWithContent);
Marco