Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Ifrit
    Registrato dal
    Oct 2005
    Messaggi
    116

    [Ajax] XMLHttpRequest - Lo status va a zero

    Salve a tutti.
    Sto cercando di capire come funzione l'oggetto XMLHttpRequest per poter ottenere informazioni dal server in maniera asincrona.

    Per iniziare non voglio fare nulla di complicato, voglio solo contattare una pagina (php) che mi dia come risposta ciò che contiene dell'array $_GET e nell'array $_POST; ecco il cidice di riferimento che ho scritto per questa pagina:
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title></title>
        </head>

        <body>

            <?php
            
    echo "Nell'array POST:
    "
    ;
            foreach (
    $_POST as $key => $value) {
                echo 
    'Key = ' $key '-> Value = ' $value '<hr>';
            }

            echo 
    "
    Nell'array GET:
    "
    ;
            foreach (
    $_GET as $key => $value) {
                echo 
    'Key = ' $key '-> Value = ' $value '<hr>';
            }
            
    ?>
        </body>
    </html>
    nota:
    Questa pagina l'ho hostata sia in locale che sul link: http://ifritprogressive.altervista.org/post.php
    Seguendo un po di guide trovate in rete, e anche quella che si trova su queste pagine, ho scritto questo codice js:
    Codice PHP:
    window.onload main;

    function 
    main() {

        var 
    local_url "http://127.0.0.1/post.php"
        
    var site_url "http://ifritprogressive.altervista.org/post.php"
        
    var http = new XMLHttpRequest();
        
    http.open("GET"site_urltrue);

        
    http.setRequestHeader("Content-Type""application/x-www-form-urlencoded");

        
    http.onreadystatechange = function() {
            if (
    http.readyState == 4) {
                
    document.body.appendChild(document.createTextNode(this.status));
            }
        }

        
    http.send(null);

    Il problema che riscontro è che lo status si porta a zero, e nel responseText non trovo nulla.

    Ho fatto molte prove ( piu' e meno verbose ), in cui cambiavo host, provavo nuovi header, e testavo lo stesso codice su piu' browser ( Firefox & Chrome ).

    Non riesco a capire cosa è che non va, qualcuno puo' aiutarmi??
    codice:
     $(".canaglia").show()

  2. #2
    Salve Ifrit,
    Non ricevi nulla perchè non stai inviando ne dati post ne dati get....

    Prova ad usare:
    var site_url = "http://ifritprogressive.altervista.org/post.php?send=datoGET";

    Nel caso specifico non è necessario usare nessun header.

    edit:
    Non avevo notato il primo echo(). Quello dovresti riceverlo...

  3. #3
    Utente di HTML.it L'avatar di Ifrit
    Registrato dal
    Oct 2005
    Messaggi
    116
    Originariamente inviato da lucavizzi
    Salve Ifrit,
    Non ricevi nulla perchè non stai inviando ne dati post ne dati get....

    Prova ad usare:
    var site_url = "http://ifritprogressive.altervista.org/post.php?send=datoGET";

    Nel caso specifico non è necessario usare nessun header.
    Ciao lucavizzi =)
    Allora, ho fatto anche quel test ma non risiede li il problema;
    Oltre al fatto che in qualsiasi caso dovrei avere un minimo di output ( dovuto alla parte statica dell'html e degli echo fuori dai controlli di flusso ).
    In sostanza, in questo caso dovrei ottenere come risposta la seguente pagina:
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <
    title></title>
    </
    head>

    <
    body>

    Nell'array POST:

    Nell'
    array GET:
    </
    body>
    </
    html
    (output che è possibile osservare accedendo alla pagina di interesse mediante browser)
    Cosa che non accade per motivi che non mi spiego. Oltretutto c'è lo status che si porta al valore 0, invece che a un auspicabile 200 o 400;

    Comunque, per dovere di cronaca, ho ritentato la comunicazione passando dei parametri per il GET ( anche se a me in realtà serve il metodo POST ), ma nulla, solito risultato
    codice:
     $(".canaglia").show()

  4. #4
    Originariamente inviato da Ifrit
    Ciao lucavizzi =)
    Allora, ho fatto anche quel test ma non risiede li il problema;
    Oltre al fatto che in qualsiasi caso dovrei avere un minimo di output ( dovuto alla parte statica dell'html e degli echo fuori dai controlli di flusso ).
    In sostanza, in questo caso dovrei ottenere come risposta la seguente pagina:
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <
    title></title>
    </
    head>

    <
    body>

    Nell'array POST:

    Nell'
    array GET:
    </
    body>
    </
    html
    (output che è possibile osservare accedendo alla pagina di interesse mediante browser)
    Cosa che non accade per motivi che non mi spiego. Oltretutto c'è lo status che si porta al valore 0, invece che a un auspicabile 200 o 400;

    Comunque, per dovere di cronaca, ho ritentato la comunicazione passando dei parametri per il GET ( anche se a me in realtà serve il metodo POST ), ma nulla, solito risultato
    Sì, avevo editato il mio post precedente...

    Ho notato ora, che valorizzi due variabili: local_url e site_url.
    XMLHttpRequest può essere usato solo nell'ambito dello stesso dominio.
    E' una limitazione applicata per motivi di sicurezza.

    Ciao

  5. #5
    Utente di HTML.it L'avatar di Ifrit
    Registrato dal
    Oct 2005
    Messaggi
    116
    Originariamente inviato da lucavizzi
    Sì, avevo editato il il mio post precedente...

    Ho notato ora che valorizzi due variabili: local_url e site_url.
    XMLHttpRequest può essere usato solo nell'ambito dello stesso dominio. E' una limitazione applicata per motivi di sicurezza.

    Ciao
    aaaaaaaaaaaaaa questa mi è nuova =X grazie =) vedrò subito di fare due test =P
    Ultima cosa, non vi è modo di far richiedere al client richieste su server non facenti parte del dominio di referenza? e se no, esiste un modo per leggere il dominio di esecuzione?
    codice:
     $(".canaglia").show()

  6. #6
    Richieste crossdomain sono possibili lato-server con file_get_content() di PHP o, in alcuni casi, con JSONP.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.