Javascript externe PHP Datei auslesen

  • Hey,


    ich nutze normalerweise bei Websiteprojekten immer, sofern ich es benötige, immer einen XMLHTTPRequest zum aufrufen einer PHP Datei.


    Jedoch bin ich aktuell dabei ein Userscript Firefox / Chrome zu entwickeln und bin aufgrund einer notwendigen Datenbankanbindung dazu "genötigt", eine PHP Datei aufzurufen, die auf meinem Webspace liegt.


    Allerdings wird nichts ausgelesen; die Alertbox erscheint nicht.
    Ich habe es bisher auf allen meinen Webseiten so gelöst bekommen, nur hier hakt es leider.
    Der Link ist ebenfalls 100 %ig korrekt.
    Liegt es daran, dass die Datei extern ist? Wenn ja, gibt es Alternativen oder sonstige Lösungsmöglichkeiten?


    Danke schon mal.


    Viele Grüße


    //E: Die Include Zeilen habe ich lediglich zensiert, die sind so nicht im Script.
    //E2: Ab der request.open() Zeile wird anscheinend nichts mehr ausgeführt, dort scheint der Fehler zu liegen.

  • Falls diese Webseite auf einer anderen Domain läuft:


    Das ist auf Grund eines Schutzmechanismus nicht möglich auf eine .php Datei zuzugreifen im externen. (Vielleicht hast dus aber schon gelöst)


    Aber...
    Wenn du folgende Zeile innerhalb der Ziel .php Datei verwendest innerhalb des PHP Scriptes, sollte es funktionieren.

    Code
    header("Access-Control-Allow-Origin: *");


    Mehr dazu:
    http://stackoverflow.com/quest…n-multiple-origin-domains


    Vielleicht liegt es daran? Hatte selbst Probleme mit externe Zugriffe und hab das damit gelöst gehabt.

    "Einen Streit im Internet gewinnen, ist wie ein Sieg bei den Paralympics. Du hast zwar gewonnen, aber du bist immer noch behindert."

    3 Mal editiert, zuletzt von Nyuchen ()

  • Erst mal danke für deine Antwort.


    PHP
    <? header("Access-Control-Allow-Origin: *"); ?>
    <div id="result">1</div>


    So schaut jetzt erstmal zu Testzwecken die PHP Datei aus.


    Jedoch funktioniert dies mit obigem Code leider immer noch nicht.


    //E: In der Browserkonsole kommt folgender Fehler:


    Laden von gemischten aktiven Inhalten "//Domain zensiert" wurde blockiert.

  • Hey,


    habe das mal ausprobiert.

    JavaScript
    GM_xmlhttpRequest({
      method: "GET",
      url: "www.link.zu/meiner/seite.php",
      onload: function(response) {
        alert(response.responseText);
      }
    });


    Habe mal zu Testzwecken das erste Beispiel ausprobiert, jedoch wird rein gar nichts ausgegeben.


    Gibt es da irgendwelche Dinge zu beachten, bspw. das Inkludieren einer bestimmten Datei? Auf der Seite habe ich diesbezüglich leider nichts finden können.


  • Probiers mal mit "http://" davor, so hab ichs auch gemacht. Dieser Scriptabschnitt wird auch von mir genutzt und ist für mehrere Browser fähig.
    Das mit dem "Access-Control-Allow-Origin" hast du ja bereits in der Ziel-Datei drin.


    Bei mir funktioniert das was ich oben drin hab.

    "Einen Streit im Internet gewinnen, ist wie ein Sieg bei den Paralympics. Du hast zwar gewonnen, aber du bist immer noch behindert."

  • Hey,


    bei mir funktioniert das leider nicht. Externer Zugriff wurde jedoch in der PHP Datei gestattet.
    Wollte es nun nach der Greasemonkey Funktion machen:



    JavaScript
    GM_xmlhttpRequest({
        method: "GET",
        url: "Link",
        onload: function(response) {
            alert(response.responseText);
        }
    });


    Jedoch funktioniert das merkwürdigerweise ebenfalls nicht.
    Ich finde auch nirgendwo in Google eine funktionierende Lösung.


    //E: Letzten Satz hinzugefügt

  • Okay, danke Trooper habe ich das Problem gefunden. Es lag daran, dass das Dokument noch nicht komplett geladen wurde.
    Danke auch an alle, die hier Lösungsansätze gegeben haben.


    In der Konsole wird dann nur folgendes ausgegeben:


    getUserData() und setUserData() sollten nicht mehr verwendet werden. Verwenden Sie stattdessen WeakMap oder element.dataset.


    Aber das ist in einer komplett anderen Datei und auch schon immer da gewesen.


    Habe mal mittlerweile dran gedacht, dass das Script gar nicht auf der Seite ausgeführt wird, aber ein alert widerspricht dieser These. Jedenfalls, sofern es über dem

    JavaScript
    GM_xmlhttpRequest({    method: "GET",    url: "Link",    onload: function(response) {        console.log(response);    }});


    verwendet wird.
    //E1: Problem gelöst
    //E2: Rechtschreibfehler