Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    144

    problema php ajax testo asincrono

    Ciao a tutti!

    Allora volevo porre una domanda...
    Io ho questo codice per far si che quando si clicca su invia (nella pagina in cui mi trovo, mettiamo si chiami index.php) prenda del testo da una pagina php (testo.php)e lo visualizzi subito sotto alla scritta invia in index.php

    Ora il problema sta nel fatto che sotto index.php ci sta altra roba, e siccome il testo in testo.php è molto lungo, va a finire in fondo alla pagina.
    Io vorrei che il testo.php comparisse alla destra di invia (supponendo una tabella di due colonne, a sinistra ho invia, voglio il testo nella colonna di destra).
    E' possibile?
    Io vi posto qui il codice js e php

    Codice PHP:
    <script language="Javascript">
    //Funzione per la gestione asincrona AJAX
    function xmlhttpPost(strURL) {
    //Inizializzo l'oggetto xmlHttpReq
    var xmlHttpReq false;
    var 
    self this;
    // qui valutiamo la tipologia di browser utilizzato per selezionare la tipologia di oggetto da creare.
    // Se sono in un browser Mozilla/Safari, utilizzo l'oggetto XMLHttpRequest per lo scambio di dati tra browser e server.
    if (window.XMLHttpRequest) {
    self.xmlHttpReq = new XMLHttpRequest();
    }
    // Se sono in un Browser di Microsoft (IE), utilizzo Microsoft.XMLHTTP
    //che rappresenta la classe di riferimento per questo browser
    else if (window.ActiveXObject) {
    self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    //Apro il canale di connessione per regolare il tipo di richiesta.
    //Passo come parametri il tipo di richiesta, url e se è o meno un operazione asincrona (isAsync)
    self.xmlHttpReq.open('POST'strURLtrue);

    //setto l'header dell'oggetto
    self.xmlHttpReq.setRequestHeader('Content-Type''application/x-www-form-urlencoded');

    /* Passo alla richiesta i valori del form in modo da generare l'output desiderato*/
    self.xmlHttpReq.send(recuperaValore());

    /* Valuto lo stato della richiesta */
    self.xmlHttpReq.onreadystatechange = function() {

    /*Gli stai di una richiesta possono essere 5
    * 0 - UNINITIALIZED
    * 1 - LOADING
    * 2 - LOADED
    * 3 - INTERACTIVE
    * 4 - COMPLETE*/

    //Se lo stato è completo
    if (self.xmlHttpReq.readyState == 4) {
    /* Aggiorno la pagina con la risposta ritornata dalla precendete richiesta dal web server.Quando la richiesta è terminata il responso della richiesta è disponibie come responseText.*/
    aggiornaPagina(self.xmlHttpReq.responseText);
    }
    }

    }
    /*Questa funzione recupera i dati dal form.*/
    function recuperaValore() {
    var 
    form document.forms['form'];
    var 
    nome form.nome.value;
    valore 'nome=' escape(nome);
    return 
    valore;
    }
    /*Questa funzione viene richiamata dall'oggetto xmlHttpReq per l'aggiornamento asincrono dell'elemento risultato*/
    function aggiornaPagina(stringa){
    document.getElementById("risultato").innerHTML stringa;
    }
    </script> 
    Codice PHP:

    <form name="form" onSubmit="javascript:xmlhttpPost('codiciesami.php'); return false;">
    <
    input name="nome" type="hidden">
    <
    input value="Invia" type="submit">
    </
    p>
    <
    div id="risultato"></div>
    </
    form

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    144
    Nessuno ha un suggerimento su come risolvere il problema?

  3. #3
    Prova a sostituire <div id="risultato"></div>
    con <span id="risultato"></span>
    e spostalo prima di </p>

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da phpista
    Nessuno ha un suggerimento su come risolvere il problema?
    Se scrivessi nel forum giusto magari avresti qualche possibilità in più

  5. #5

  6. #6

    Re: problema php ajax testo asincrono

    Originariamente inviato da phpista

    Io vorrei che il testo.php comparisse alla destra di invia (supponendo una tabella di due colonne, a sinistra ho invia, voglio il testo nella colonna di destra).

    Codice PHP:

    <form name="form" onSubmit="javascript:xmlhttpPost('codiciesami.php'); return false;">
    <
    input name="nome" type="hidden">
    <
    input value="Invia" type="submit">
    </
    p>
    <
    div id="risultato"></div>
    </
    form
    Ciao.
    Bene o male la soluzione l'hai scritta nella tua domanda...
    Detto questo, perchè usi un form con un campo nome senza valore? Perchè invece che eseguire un submit non gli fai ritornare false e cambi il submit in un normale button, inserendo l'evento onclick che poi richiama la tua funzione? Son piccolezze eh, ma giusto per capire.
    L'html potrebbe essere, per diventare come vorresti
    codice:
    <table id="tabella_globale" border="0">
      <tr>
        <td>
            <form name="form" onSubmit="javascript:xmlhttpPost('codiciesami.php'); return false;">
                <input name="nome" type="hidden">
                <input value="Invia" type="submit">
            </form>
        </td>
        <td id="risultato"></td>
      </tr>
    </table>
    Non l'ho verificato, ovviamente, e altrettanto ovviamente fa uso di tabelle quindi è poco flessibile per un layout dinamico, ma l'idea è quella.


  7. #7
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    144
    Grazie mille! Funziona!

    Solo una cosa però... in pratica facendo così, quando clicco su invia, nella parte destra della tabella compare il contenuto dell'altra pagina php. Solo che ssendo che quest'ultima pagina stampa tanti nomi in colonna, quando clicco su invia compaiono si i nomi, ma il tasto invia che è nella colonna di sinistra mi si sposta al centro della tabella e leggermente a sinistra (ho provato con:

    <input value="Non ricordi il codice?" type="submit" align="top" >

    ma niente da fare...). C'è un modo per tenerlo in alto fisso dove è prima di cliccarci?


    GRAZIE tante!

  8. #8
    codice:
    <table id="tabella_globale" border="0">
      <tr>
        <td valign="top">
    ...

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.