Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832

    [AJAX] gestire un vettore come responseText

    ciao gente.
    ho un problema (artosius non imprecare!): devo fare diverse procedure in uno script php e alla fine di ogni procedura devo ottenere una risposta.
    ho pensato di inserirle in un array in modo da darlo poi in pasto alla funzione ajax che fa quello che deve.

    ad ogni passo dello script php creo un record di un array:
    $risp[0] = $risposta1
    ...
    $risp[x] = $ripostaXX;

    poi con un abile:
    Codice PHP:
    ...
        foreach(
    $risp as $value){
            
    $risposta $value."|";
        }
        echo 
    $risposta
    e quindi nella funzione javascript:
    [code]
    ...
    function handler(){
    if (this.readyState != 4)
    return;

    var result = this.responseText;
    alert(result);
    handler_risposta_server(result);
    }

    function handler_risposta_server(risposta){
    var risp = new Array();
    risp = risposta.split('|');
    for(var i=0; i<risp.length; i++){
    alert(risp[i]);
    document.getElementById('HP').innerHTML = risp[1];
    document.getElementById('SP_pg').innerHTML = risp[0];
    }
    ...
    [/php]
    solo che sto cavolo di vettore non viene compilato bene
    e l'inserimento nelle label HP e SP_pg non viene fatto bene...

    idee?

    tnx e

  2. #2
    ma se gli passi un array in Javascript e sei a posto?

    hai $risp, fai:

    Codice PHP:
        $risposta 'var risp = new Array(';
        foreach(
    $risp as $value){ 
            
    $risposta .= '"'.$value.'",';
        } 
        
    $risposta substr($risposta0strlen($risposta) - 1);
        
    $risposta .= ");";
        echo 
    $risposta
    Poi fai:
    Codice PHP:
    function handler(){
       if (
    this.readyState != 4)
          return;

       var 
    result this.responseText;
       
    alert(result);
       
    handler_risposta_server(result);
    }

    function 
    handler_risposta_server(risposta){
       eval(
    risposta);

       for(var 
    i=0i<risp.lengthi++){
          
    alert(risp[i]);
          
    document.getElementById('HP').innerHTML risp[i];
          
    document.getElementById('SP_pg').innerHTML risp[i];
       }

    Ti ho lasciato quei document.getElem etc con innerHTML, perché non capisco che volevi fare, ma così potrai solo stampare l'ultimo elemento di risp, perché innerHTML sovrascrive quello che c'era prima con quello che gli passi.

  3. #3
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    intanto grazie.
    quello che volevo fare era stampare risp[0] in un campo, risp[1] in un altro e così via.
    cioè, a seguito di uno script accumulo diverse risposte che inserisco in un vettore e le devo poi visualizzare ognuna in un differente punto della pagina.

    solo che col sistema tuo, togliendo il gia prima errato ciclo for, non funziona
    mi compaiono solo le lettere a r e v, ovvero le porzioni della strina "var risp = new array" e non il contenuto del vettore

  4. #4
    ma l'hai modificato il PHP?

  5. #5
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    Originariamente inviato da artorius
    ma l'hai modificato il PHP?
    che vuol dire?
    la parte che genera il vettore ovviamente l'ho modificata.
    non funziona eval()
    visto che se faccio una prova di "print" non stampa il contenuto, bensì le LETTERE che compongono la scritta "var risp = new arraY(..."

  6. #6
    non è visibile da qualche parte il sito che stai facendo?

  7. #7
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    Originariamente inviato da artorius
    non è visibile da qualche parte il sito che stai facendo?
    no

    ma il punto è che lo script NON scorre piu il vettore risp, ma semplicemente preleva i valori:

    ..InnerHtml = risp[0];
    ..InnerHtml = risp[1];
    ..InnerHtml = risp[2];

  8. #8
    scusa, puoi postare l'HTML risultante dal file PHP, che faccio un paio di prove?

  9. #9
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    te lo faccio generico, perchè il vettore "risp" viene creato in base a degli output di una query da database.

    Codice PHP:
    $risp[0] = "sanartosius";
    $risp[1] = "lyllopippa";
    $risposta 'var risp = new Array(';
        foreach(
    $risp as $value){
            
    $risposta .= '"'.$value.'",';
        }
        
    $risposta substr($risposta0strlen($risposta) - 1);
        
    $risposta .= ");";
        echo 
    $risposta
    l'ajax.js:
    codice:
    function handler(risposta){
       var risposta = ajax.responseText;
       eval(risposta);
    //PROVA a fare l'alert!
       for(var i=0; i<risposta.length; i++){
           alert(risposta[i]);
           }
       document.getElementById('label1').InnerHTML = risposta[0];
       document.getElementById('label2').InnerHTML = risposta[1];
    }

  10. #10
    Allora fai una query qualunque, POi guarda il sorgente HTML e postami quello, non codice PHP

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.