Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491

    AJAX caricamento multiplo

    Ho modificato la home page del mio blog in modo tale che i venisse caricata prima tutta la struttura della pagina poi, sfruttando AJAX, i songoli post uno per uno. Ecco il codice javscript che ho scritto:
    codice:
    function sendAJAXrequest(nomeFile,post_par,func,ajax){
      if(ajax) {
        	ajax.open('post', nomeFile, true);
    	ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
    	ajax.onreadystatechange = func;
        	ajax.send(post_par);
      }
      return;
    }
    
    function caricaPost(attuale,count) {
      var nomeFile  = "/Sezioni/Articoli/AJAX_getPost.php";
      var post_par  = "id="+post_id[attuale];
      var elemento  = prendiElementoDaId("testo"+post_id[attuale]);
      var ajax = assegnaXMLHttpRequest();
    
      /*Definisce la funzione da attuare*/
      var func = function() {
          if(ajax.readyState === readyState.COMPLETATO) {
            // verifica della risposta da parte del server
            if(statusText[ajax.status] === "OK"){
    	     elemento.innerHTML = ajax.responseText;
    	     if(count>0)caricaPost(attuale+1,count-1);
            }
            else{
    	  libero=true;
              elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.
    ";
              elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];
            }
          }
        }
      /*Elabora richiesta*/
     return sendAJAXrequest(nomeFile,post_par,func,ajax);
    }
    Il tutto pare funzionare e non dà errori, tuttavia a volte succede che alcuni post rimangono vuoti, ovvero, controllando con FireBug, pare che il server ritorna una stringa vuota. Posto che il codice php è corretto, ci sono errori nella logica? Il fatto di richiamare "ricorsivamente" la funzione caricaPost() può comportare qualche errore? O forse il server non riesce ad elaborare troppe domande una vicino l'altra? Il fatto strano è che poi questo comportamento è random, non avviene sempre e sempre per post diversi!!
    Aiuto....
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  2. #2
    Nel tuo caso usare ajax mi pare alquanto superfluo. Potresti benissimo utilizzare un foglio php esterno con tutti gli articoli.

  3. #3
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    No, l'idea è quella di caricare i post singolarmente DOPO che la pagina si sia caricata, in questo modo la presenza all'interno del post di immagini o video non compromette la velocità di caricamento della pagina stessa. Spero di essermi spiegato. Poi è un tentativo, una sperimentazione, è alquanto superfluo dirmi che posso fare benissimo tutto con PHP (cosa che in effetti ho fatto fino ad ora).
    Ciao
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  4. #4
    credo tu non abbia considerato che:

    1 - in questo modo non fai altro che quintuplicare le chiamate al server, quindi invece di alleggerirlo per ogni utente che entra partono il triplo delle chiamate ed il server si ritrova potenzialmente sovraccarico di richieste ... presubilmente da parsare

    2 - i motori di ricerca non indicizzeranno più niente di quanto presente nella tua pagina


    I layout NON tabellari non hanno di questi problemi, mentre la pagina si carica il contenuto, man mano che viene caricato è ben visibile ergo forse dovresti pensare a qualcosa di più utile per usare Ajax e sfruttare il solo PHP per questo caso.

    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Io non posso che essere daccordo con Mega69 e andr3a.
    Anche sapendo fare quello che chiedi, non credo che sia giusto dare una risposta che va contro il buon senso.

    Al limite, potrei pensare di RICARICARE con ajax i post modificati, ma non con n richieste server, bensì con una sola richiesta ed n risposte. :master:

    Di più non so. Ciao
    Pietro

  6. #6
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Ok,mi convince poco il discorso del maggior carico al server, in fondo le richieste sono tutte consecutive e non contemporanee, quindi sicuramente il lavoro del server è maggiore perchè alcune operazioni (come l'accesso al database) sono ripetute N volte invece di una, maquanto ciò sia effettivamente rilevante non so valutarlo. Cmq, ripeto, il mio era solo un tentativo, un modo per prendere un pò di dimistichezza con AJAX, un esercizio; cmq visto che la mia idea pare a tutti un'eresia farò dietrofront. Proverò qualcosa di diverso.
    Grazie

    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  7. #7
    Originariamente inviato da Xadoom
    le richieste sono tutte consecutive e non contemporanee

    il lavoro del server è maggiore perchè alcune operazioni (come l'accesso al database) sono ripetute N volte invece di una
    maggior carico significa anche questo ... e le richieste sono consecutive per ogni utente, se ne entrano due in un lasso di tempo di qualche secondo entrambi potrebbero richiamare simultaneamente una o più parti.

    Non hai modo di sapere quanto ci metta un utente a richiedere e ricevere risposta ... una volta contro N, per ogni N a latenza incalcolabile.

    triplicare l'accesso al db non ha mai giovato nessuno, quindi basterebbe questo per abbandonare l'approccio.

    solo questi 2 punti più l'indicizzazione ti fanno capire quanto questo approccio ad Ajax sia sbagliato.
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.