MrPalermo: IE Extension und AJAX

Hallo,

ich habe mir eine Internet Explorer Extension in der Windows Registry angelegt um einen Button in der IE Menuleiste anzuzeigen.
Im Schlüssel 'Script' habe ich mein Javascript test.js eingetragen, dass ausgeführt wird, wenn ich den Button drücke. Soweit funktioniert alles, wenn ich den Button drücke wird über alert('TEST'); der Text 'TEST' ausgegeben. Nun mein Problem:

Ich habe eine simple AJAX Funktion sendRequest() geschrieben, die einen Request auf eine PHP Seite durchführt.
Die PHP Seite liefert nur den über POST gesendeten Wert zurück.
Wenn ich die Funktion sendRequest(...) aus einer 'normalen' HTML Seite aufrufe funktioniert alles, der Wert TEST123 wird über alert (in  onReadyStateChange) angezeigt.
Wenn ich dieselbe Funktion über meinen Button ausführen lasse, kommt die AJAX Funktion nicht weiter als die Anfrage an den Server zu senden.
(readyState ist READY_STATE_LOADING).
Ich bekomme aber nie den READY_STATE_COMPLETE :-(

Nun meine Frage kann ich kein AJAX nutzen wenn ich mein JavaScript über einen IE Button starte?

Jede Art von Hilfe ist herzlich willkommen, danke im voraus!

Hier meine AJAX Funktionen:

var READY_STATE_UNINITIALIZED = 0;
var READY_STATE_LOADING = 1;
var READY_STATE_LOADED = 2;
var READY_STATE_INTERACTIVE = 3;
var READY_STATE_COMPLETE = 4;
var req = null;

function sendRequest(url, params, HttpMethod)
{
  if (!HttpMethod)
    HttpMethod = "GET";

req = new ActiveXObject("Microsoft.XMLHTTP");
  if (req)
  {
 req.onreadystatechange = onReadyStateChange;
 req.onerror = onError;
 req.open(HttpMethod, url, true);
    req.setRequestHeader
        ("Content-Type",
         "Application/x-www-form-urlencoded");
    req.send(params);
  }
}

function onReadyStateChange()
{
  var ready = req.readyState;
  var data = null;

alert(ready);
  if (ready == READY_STATE_COMPLETE)
  {
 data = req.responseText;
     alert(data);
  }
}

sendRequest("test.php", "testparam=TEST123", "POST");

  1. Hi,

    ich habe mir eine Internet Explorer Extension in der Windows Registry angelegt um einen Button in der IE Menuleiste anzuzeigen.
    Im Schlüssel 'Script' habe ich mein Javascript test.js eingetragen, dass ausgeführt wird, wenn ich den Button drücke.

    Das haettest du ueber ein Bookmarklet ggf. einfacher haben koennen.

    Ich habe eine simple AJAX Funktion sendRequest() geschrieben, die einen Request auf eine PHP Seite durchführt.
    Die PHP Seite liefert nur den über POST gesendeten Wert zurück.
    Wenn ich die Funktion sendRequest(...) aus einer 'normalen' HTML Seite aufrufe funktioniert alles, der Wert TEST123 wird über alert (in  onReadyStateChange) angezeigt.

    Definiere "normale HTML-Seite".

    Wenn ich dieselbe Funktion über meinen Button ausführen lasse, kommt die AJAX Funktion nicht weiter als die Anfrage an den Server zu senden.
    (readyState ist READY_STATE_LOADING).
    Ich bekomme aber nie den READY_STATE_COMPLETE :-(

    Erhaelt der Server den Request?
    (Access-Log ueberpruefen, ggf. Daten in eine Session schreiben, um sie mit einem weiteren Script ueberpreufen zu koennen.)

    Nun meine Frage kann ich kein AJAX nutzen wenn ich mein JavaScript über einen IE Button starte?

    Koennte auf die Domain-Konstellation und Sicherheitseinstellungen ankommen.

    MfG ChrisB

    1. Hallo ChrisB,

      danke für Deine Antwort.

      Das haettest du ueber ein Bookmarklet ggf. einfacher haben koennen.

      Hätte ich nicht, da bookmarklets nur auf der Linkleiste zu sehen sind und toolbabuttons immer!

      Definiere "normale HTML-Seite".

      das meint, dass ich denselben javascript code der mein AJAX ObjeKt enthält aus einer HTML Seite aufrufe, wenn z.B. ein onClick-Ereignis ausgelöst wird.

      Erhaelt der Server den Request?

      Ja, habe es im access.log gesehen!

      Koennte auf die Domain-Konstellation und Sicherheitseinstellungen ankommen.

      nein, denn dann würde es auch nicht über die normale HTML Seite klappen

      Ich weiß nicht in welchem Umfeld der JS Code des Buttons ausgeführt wird.
      Glaube aber das ist das Problem. Die HTML Seite, wird im Browser gestartet,
      und kann dort auch Antworten des Servers entgegennehmen.
      Ich glaube das kann der Button nicht. Er kann keine HTTP Antwort entgegennehmen, sondern nur JavaScript ausführen.

      Aber genau weiß ich das natürlich nicht!

      Hat jemand noch ne Idee?