Javascript xmlhttprequest

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • denwilly
  • Registratie: April 2009
  • Laatst online: 10-09 09:48
Hi,

Ik ben nogmaar een beginner in javascript.
Ik wil een programma schrijven dat de php/html code van een website haalt en deze weergeeft in een output textarea.

dit is mijn code:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
  <html>
    <script>
      var xmlDoc = null ;
  
      function load() {
        if (typeof window.ActiveXObject != 'undefined' ) {
          xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
          xmlDoc.onreadystatechange = process ;
        }
        else {
          xmlDoc = new XMLHttpRequest();
          xmlDoc.onload = process ;
        }
        xmlDoc.open( "GET", "khleuven.be", false );
        xmlDoc.send( null );
      }
  
      function process() {
        if ( xmlDoc.readyState != 4 ) return ;
        document.getElementById("output").value = xmlDoc.responseText ;
      }
  
      function empty() {
        document.getElementById("output").value = '<empty>' ;
      }
    </script>
  
    <body>
      <textarea id="output" cols='70' rows='40'><empty></textarea>
      <br></br>
      <button onclick="load()">Load</button> &nbsp;
      <button onclick="empty()">Clear</button>
    </body>
  </html>


Wanneer ik deze code test met een pagina die in mijn eigen folder staat dan werkt hij wel.
Maar wanneer ik pagina's vanop het internet wil bekijken dan blijft er <empty> staan.
Weet iemand hoe dit komt? Dit zou nochtans juist moeten zijn.

[ Voor 0% gewijzigd door MueR op 27-09-2010 22:54 . Reden: Code tags toegevoegd ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 18:38

crisp

Devver

Pixelated

XHR werkt niet cross-domain; dat is by design.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • denwilly
  • Registratie: April 2009
  • Laatst online: 10-09 09:48
wat kan ik dan doen als ik het cross domain wil laten werken?

Ik vraag niet om de volledige code he, Kan iemand me gewoon even op weg helpen.
Want ik ben hier nieuw mee.

[ Voor 47% gewijzigd door denwilly op 27-09-2010 22:29 ]


Acties:
  • 0 Henk 'm!

  • Vedett.
  • Registratie: November 2005
  • Laatst online: 20-09 22:00
Een eigen javascript engine maken met daarbovenop een eigen browser!

Of server-side een http request uitvoeren en het resultaat daarvan in een textarea plaatsen.

Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
idd op je eigen server de data van de andere server halen en dan terug...

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • denwilly
  • Registratie: April 2009
  • Laatst online: 10-09 09:48
Ik wil met dit javascript eigenlijk een sidebar gadget maken, dus de data van de server halen gaat enkel met deze javascript denkik.

Acties:
  • 0 Henk 'm!

  • pieturp
  • Registratie: April 2004
  • Laatst online: 18-09 15:56

pieturp

gaffa!

Als je het over MS windows hebt, dan kan dat inderdaad wel. Gadgets hebben wél de mogelijkheid om cross domain XMLHttpRequests te doen. Heb je 't al getest als gadget?

... en etcetera en zo


  • JaFFoG
  • Registratie: Januari 2003
  • Laatst online: 22-11-2024
Wat je zou kunnen doen is zoiets als het volgende (ik gebruik jQuery als voorbeeld):

Javascript-call op je pagina:
JavaScript:
1
2
3
4
5
// Use AJAX to call your PHP script, passing the url as argument for that script.
$.post('get-html-by-url.php', {url:'http://example.com'}, function(data){
    // When the call is done, include the HTML to an element with id "textarea".
    $('#textarea').val(data);
}, 'html');


get-html-by-url.php (zie ook file op PHP.net)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
    $html = isset($_POST['url']) ? @file($_POST['url']) : "What's the URL?";
    if ($html === false) { // This happens when file() generates an error (which was suppressed by @).
        $html = 'Something went wrong while fetching the HTML from '.$_POST['url'];
    }
    else if (is_array($html)) { // file() only returns an array if all went well.
        // Convert array to a single string.
        $html = join("\n", $html);
    }

    // Output the fetched data, or any error message that might be generated.
    echo $html;
?>


Heb de code niet getest, maar ben er vrij zeker van dat alles zou moeten werken. Uiteraard kan het mooier, maar dit is quick-and-dirty. :)

PS
PHP-code van een website halen zal niet gaan, tenzij je dit middels FTP oid doet. Via een HTTP-call krijg je enkel het resultaat terug van wat de betreffende webserver retourneert (geparsed, geïnterpreteerd en wel).

[ Voor 8% gewijzigd door JaFFoG op 29-09-2010 15:15 ]

Bla


  • Joolee
  • Registratie: Juni 2005
  • Niet online
JaFFoG schreef op woensdag 29 september 2010 @ 15:12:
Wat je zou kunnen doen is zoiets als het volgende (ik gebruik jQuery als voorbeeld):

Javascript-call op je pagina:
JavaScript:
1
2
3
4
5
// Use AJAX to call your PHP script, passing the url as argument for that script.
$.post('get-html-by-url.php', {url:'http://example.com'}, function(data){
    // When the call is done, include the HTML to an element with id "textarea".
    $('#textarea').val(data);
}, 'html');


get-html-by-url.php (zie ook file op PHP.net)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
    $html = isset($_POST['url']) ? @file($_POST['url']) : "What's the URL?";
    if ($html === false) { // This happens when file() generates an error (which was suppressed by @).
        $html = 'Something went wrong while fetching the HTML from '.$_POST['url'];
    }
    else if (is_array($html)) { // file() only returns an array if all went well.
        // Convert array to a single string.
        $html = join("\n", $html);
    }

    // Output the fetched data, or any error message that might be generated.
    echo $html;
?>


Heb de code niet getest, maar ben er vrij zeker van dat alles zou moeten werken. Uiteraard kan het mooier, maar dit is quick-and-dirty. :)

PS
PHP-code van een website halen zal niet gaan, tenzij je dit middels FTP oid doet. Via een HTTP-call krijg je enkel het resultaat terug van wat de betreffende webserver retourneert (geparsed, geïnterpreteerd en wel).
Ik wil nog even benadrukken dat dit alleen maar een VOORBEELD is. Het script zal waarschijnlijk wel werken maar is ALLES BEHALVE VEILIG. Bedenk eens wat er gebeurt als je het volgende aanroept: get-html-by-url.php?url=config.php (Ja, ik weet dat er gebruik gemaakt wordt van $_POST maar dat is net zo eenvoudig te faken, alleen minder makkelijk als voorbeeld te gebruiken ;))
Pagina: 1