Visualizzazione risultati 1 fino 7 di 7

Discussione: Ajax senza xmlHttpRequest

  1. #1
    Guest

    Exclamation Ajax senza xmlHttpRequest

    Ciao a tutti. Vengo subito al mio problema. Allora ho creato una pagina web in html che invia una variabile ad un files php, poi questa viene elaborata e mi viene restituito il risultato direttamente sulla pagina html senza aprire la pagina php. Ovviamente ho utilizzato ajax, ma siccome i due files si trovano su domini diversi ho trovato e modificato questo script che funziona alla grande:
    Pagina html:
    Codice HTML:
    <script type="text/javascript">
    // Ottieni la base url
    url = document.location.href;
    xend = url.lastIndexOf("/") + 1;
    var base_url = url.substring(0, xend);
    
    function chiama_ajax(url) {
    //Inizia l'url con http?
    if (url.substring(0, 4) != 'http') {
    url = base_url + url;
    }
    // Crea un nuovo elemento JS
    var jsel = document.createElement('SCRIPT');
    jsel.type = 'text/javascript';
    jsel.src = url;
    //Appende l'elemento JS e quindi esegue la 'chiamata AJAX'
    document.body.appendChild (jsel);
    }
    
    setTimeout('leggodiv()',3000);
    function leggodiv() {
    element = document.getElementById ("contentdiv");
    string = element.innerHTML;
    alert (string)}
    
    </script> 
    <div id="contentdiv"> </div> <input type="button" onClick="chiama_ajax('http://www.paternopolionair.it/script.php?id=52852857')" value="Interroga PHP" />
    e questo il file php:



    Codice PHP:
    <?php
    $testo
    = $_GET[id];
    ?>
    div = document.getElementById('contentdiv');
    div.innerHTML = '<?php echo "il tuo ID: $testo"; ?>';
    Lo script l'ho semplificato perchè è molto più lungo....

    Allora, fin qui tutto OK. Tutto funziona alla perfezione e quando clicco sul pulsante Interroga PHP mi viene mostrato nel div della pagina html i contenuto generato da PHP. Ora il mio problema è questo: Siccome quello che mi viene generato dal php è una stringa simile a questa: "ID:082771|MU:2456|MU:566 " avrei bisogno che javascript prenda questa stringa, la divida e mi generi una tabella con i vari MU e nella prima riga l'id. Forse la seconda parte è più complicata e richiede un po di lavoro. Quello che mi interessa per ora è come prendere questa stringa ed importarla in una variabli javascript. Ho provato a modificare l'html in questo modo ma siccome lo script php impiega un po di tempo a generare la stringa l'alert che mi viene mostrato è vuoto.


    Codice HTML:
    <script type="text/javascript">
    // Ottieni la base url
    url = document.location.href;
    xend = url.lastIndexOf("/") + 1;
    var base_url = url.substring(0, xend);
    
    function chiama_ajax(url) {
    //Inizia l'url con http?
    if (url.substring(0, 4) != 'http') {
    url = base_url + url;
    }
    // Crea un nuovo elemento JS
    var jsel = document.createElement('SCRIPT');
    jsel.type = 'text/javascript';
    jsel.src = url;
    //Appende l'elemento JS e quindi esegue la 'chiamata AJAX'
    document.body.appendChild (jsel);
    }
    
    function leggodiv() {
    element = document.getElementById ("contentdiv");
    string = element.innerHTML;
    alert (string)}
    
    </script> 
    
    
    <div id="contentdiv"> </div> <input type="button" onClick="chiama_ajax('http://www.paternopolionair.it/script.php?id=52852857');leggodiv();" value="Interroga PHP" />
    Avete qalche idea su come importare questa stringa e magari come generare la tabella?

  2. #2
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    puoi spiegare meglio come funziona questo script?

    nel senso che come fa a stampare il risultato nel div = contentdiv ?

    oppure metti i codici in dettaglio per ogni file utilizzato....
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  3. #3
    Guest

    Angry

    è uno script che ho trovato qui: http://www.w3facile.com/ajax-web-2/a...tprequest.html

    Quello che ho postato è tutto il codice utilizzato. Puoi vedere una demo qui:
    Questa è la pagina html: http://justrealspanky.altervista.org/form2.html che interroga PHP e dove viene mostrato il valore generato da php e questo il file php: http://www.paternopolionair.it/script.php

  4. #4
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    scusa, adesso ho capito!

    ho hai fatto prima, imposta un settimeout a 5 secondi almeno per la funzione leggodiv()
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  5. #5
    Guest

    Question

    Ok, ho modificato lo script in questo modo:

    Codice HTML:
    <script type="text/javascript">
    // Ottieni la base url
    url = document.location.href;
    xend = url.lastIndexOf("/") + 1;
    var base_url = url.substring(0, xend);
    window.setTimeout("leggodiv()", 5000);
    
    function chiama_ajax(url) {
    //Inizia l'url con http?
    if (url.substring(0, 4) != 'http') {
    url = base_url + url;
    }
    // Crea un nuovo elemento JS
    var jsel = document.createElement('SCRIPT');
    jsel.type = 'text/javascript';
    jsel.src = url;
    //Appende l'elemento JS e quindi esegue la 'chiamata AJAX'
    document.body.appendChild (jsel);
    }
    
    function leggodiv() {
    element = document.getElementById ("contentdiv");
    string = element.innerHTML;
    alert (string)}
    
    </script> 
    
    
    <div id="contentdiv"> </div> <input type="button" onClick="chiama_ajax('http://www.paternopolionair.it/script.php?id=ID52852857|MU452');leggodiv();" value="Interroga PHP" />
    Solo, guarda cosa succede: http://justrealspanky.altervista.org/form2.html mi viene mostrato prima un alert in bianco, poi preso il valore php e dopo 5 secondi mi viene mostrato il nuovo alert con il codice all'interno. Per quale motivo compare quell'alert vuoto appena clicco?

  6. #6
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    per forza...

    il settimeout devi metterlo dentro la funzione chiama_ajax()

    così:
    Codice HTML:
    <script type="text/javascript">
    // Ottieni la base url
    url = document.location.href;
    xend = url.lastIndexOf("/") + 1;
    var base_url = url.substring(0, xend);
    
    function chiama_ajax(url) {
    //Inizia l'url con http?
    if (url.substring(0, 4) != 'http') {
    url = base_url + url;
    }
    // Crea un nuovo elemento JS
    var jsel = document.createElement('SCRIPT');
    jsel.type = 'text/javascript';
    jsel.src = url;
    //Appende l'elemento JS e quindi esegue la 'chiamata AJAX'
    document.body.appendChild (jsel);
    setTimeout('leggodiv()',5000);
    }
    
    function leggodiv() {
    element = document.getElementById ("contentdiv");
    string = element.innerHTML;
    alert (string)}
    
    </script> 
    e dimenticavo....togli la chiamata alla funzione leggodiv() dal bottone:
    Codice HTML:
    <div id="contentdiv"> </div> <input type="button" onClick="chiama_ajax('http://www.paternopolionair.it/script.php?id=ID52852857|MU452');" value="Interroga PHP">
    ho fatto alcune prove, e ho constatato che basta chiamare la funzione leggodiv() nel file .php, dopo che ha stampato il risultato nel div, in questo modo:
    Codice PHP:
    <?php
    $testo
    = $_GET[id];
    ?>
    div = document.getElementById('contentdiv');
    div.innerHTML = '<?php echo "il tuo ID: $testo"; ?>';
    leggodiv();
    in questo modo non hai bisogno di settare un timeout nel file html

    funziona provalo!!!

    quindi codice finale file html:
    Codice HTML:
    <script type="text/javascript">
    // Ottieni la base url
    url = document.location.href;
    xend = url.lastIndexOf("/") + 1;
    var base_url = url.substring(0, xend);
    
    function chiama_ajax(url) {
    //Inizia l'url con http?
    if (url.substring(0, 4) != 'http') {
    url = base_url + url;
    }
    // Crea un nuovo elemento JS
    var jsel = document.createElement('SCRIPT');
    jsel.type = 'text/javascript';
    jsel.src = url;
    //Appende l'elemento JS e quindi esegue la 'chiamata AJAX'
    document.body.appendChild (jsel);
    
    //chiamare leggodiv() con un timeout da qui non serve
    //setTimeout('leggodiv()',1000);
    }
    
    function leggodiv() {
    element = document.getElementById ("contentdiv");
    string = element.innerHTML;
    alert (string)}
    </script> 
    
    
    <div id="contentdiv"> </div> <input type="button" onClick="chiama_ajax('http://www.paternopolionair.it/script.php?id=ID52852857|MU452');" value="Interroga PHP">
    Ultima modifica di EuroSalute : 29-10-2010 alle ore 14.52.38 Motivo: più info
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  7. #7
    Guest

    Thumbs up

    Siii.. Funziona alla perfezione. Ti ringrazio tantissimo..

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •