Per AJAX Daten an anderen Server schicken

Status
Nicht offen für weitere Antworten.

ddhb

Mitglied
Hallo!

PHP:
/***********************************************************\ 
* AJAX Handler class                                     
\***********************************************************/ 
 
/* 
* main function 
* @params:    none 
*/ 
function ddhb_AJAX(){ 
    this.AJAX_handler = false; 
    this.debug = false; 
    this.init(); 
}; 
 
 
/* 
* intizialize the AJAX functions 
* @params:    none 
*/ 
ddhb_AJAX.prototype.init = function (){ 
    if(this.AJAX_handler) return; 
     
    if(window.XMLHttpRequest){ // Mozilla, Safari, Firefox 
        try { 
            this.AJAX_handler = new XMLHttpRequest(); 
                 
        } catch(e) { 
            if(this.debug) alert('XMLHttpRequest init failed'); 
            return false; 
        } 
    }else if(window.ActiveXObject){ // IE 
                try { 
                  this.AJAX_handler = new ActiveXObject("Microsoft.XMLHTTP"); 
                  return true; 
                } catch(e) { 
                    if(this.debug) alert('Microsoft.XMLHTTP init failed'); 
                    return false; 
                } 
    } 
}; 
 
 
/* 
* Send request to server 
* @param1:    URL to script 
* @param2:    datas for script 
*/ 
ddhb_AJAX.prototype.send = function (url,datas){ 
     
    if(!this.AJAX_handler) { // if AJAX is not init 
        this.init(); 
        if(this.debug) alert('AJAX not init at ddhb_AJAX::send'); 
    }
 
    this.AJAX_handler.open('POST', url+'?'+datas); 
    this.AJAX_handler.send(null); 
}; 
 
 
/* 
* Set event function for the onreadystatechange property 
* @param1:    a function that checks 
*/ 
ddhb_AJAX.prototype.onreadystatechange = function (func){ 
    if(typeof(func) != 'function') { 
        if(this.debug) alert('Param1 at ddhb_AJAX::onreadystatechange is not a function'); 
        return false; 
    } 
     
    if(!this.AJAX_handler) { // if AJAX is not init 
        this.init(); 
        if(this.debug) alert('AJAX not init at ddhb_AJAX::send'); 
    } 
     
    this.AJAX_handler.onreadystatechange = func; 
}; 
 
 
// init AJAX 
var ddhb_AJAX = new ddhb_AJAX();


/***********************************************************\ 
* Speicherung der Besuche auf einer NP                                 
\***********************************************************/


var test = parent.document.getElementById('Gb_link').innerHTML;
ddhb_AJAX.AJAX_handler.send('http://ddhb.net/festlinfo.php','nickname='+test);
ddhb_AJAX.AJAX_handler.onreadystatechange(getResult);

function getResult(){ 
    var AJAX_handler = ddhb_AJAX.AJAX_handler;  
     
    if(AJAX_handler.readyState == 4) { 
        var nickname = AJAX_handler.responseText; 
        alert(nickname); 
    } 
}
So jetzt mal was das Script macht, bzw. machen sollte.
In der Variable test ist ein Name gespeichert, und der Name sollter per AJAX an eine PHP Datei auf einen anderen Server gesendet werden. Das PHP Script speichert den Namen dann in einer Liste und gibt per echo diesen Namen nocheinmal zurück.
Ich bekomme jetzt allerdings die Meldung
Fehler: uncaught exception: Die Erlaubnis für den Aufruf der Methode XMLHttpRequest.open wurde verweigert
Ist das eine Sicherheitseinstellung von Mozilla, dass man keine Sachen ausserhalb des Servers ansteuern kann oder einfach ein Fehler in meinem Script?

Danke schonmal für die Hilfe
ddhb
 
Kann man das nicht umgehen?
Hab im Net was gelesen von
PHP:
netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
Hab aber keine Ahnung wie ich das einbauen soll, bzw. was das überhaupt macht.
 
Wenn man die Sicherheitseinstellungen des Mozilla ändert, ginge es schon....nur wird das niemand für dich tun.:(

Diese Zeile da würde zwar eine entsprechende Anfrage an den User stellen....allerdings nur, wenn das Skript im lokalen Dateisystem ausgeführt wird....somit hilft es dir höchstwahrscheinlich nicht weiter.
 
Wo könnte ich das den umstellen? Die meisten die dieses Script aufrufen benutzen sowiso den IE. Gibts bei dem auch eine solche einschränkung?

Ich kanns leider nicht testen da ich hier Linux am laufen habe und keinen Internet Explorer da habe.
 
Danke für den Link, das haut in Mozilla schon perfekt hin, aber im IE bekomme ich beim Senden der Daten zum Server die Meldung "Zugriff verweigert".
Gibt es für den IE vlt. auch noch eine Lösung? Denn Wie gesagt, die Mehrzahl der Benutzer verwendet leider den IE.
 
Die beste Lösung wäre wohl, wenn du die Verbindung zu dem fremden Server mit bspw. einem PHP-Skript aufnimmst.

Also ca so:
Das JS sendet die Anfrage an dein eigenes PHP-Skript
Dein PHP-Skript wiederum sendet die Anfrage per fsockopen() an den fremden Server
Dein PHP-Skript gibt die Antwort des fremden Servers aus....und somit an dein JS zurück.

....denn die Sicherheitseinstellungen wird, wie angedeutet, wegen deinem Skript niemand ändern.
 
Status
Nicht offen für weitere Antworten.

Neue Beiträge

Zurück