Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    Request AJAX che restituisce risultati 'slittati' di uno

    Ho un problema di cui non riesco a venire a capo, anche perchè non mi riesce di vederne la causa...
    Comincio col descrivere in termini generali la cosa.
    Ho una pagina, in cui ci sono una serie di blocchi di contenuto, ognuno inserito in un <div> il cui nome è composto dalla parola scheda seguita da un numero progressivo (per cui, nella pagina sono presenti div chiamati scheda1, scheda2, scheda3, etc...)
    Per una serie di ragioni, relative ai tempi di caricamento ed altro, la pagina funziona in modo tale che carica tutti i contenuti soltanto delle prime 5 schede.
    Quindi, man mano che la pagina scrolla, vengono caricati - uno per volta - i contenuti delle schede successive.
    Per cui, in pratica, all'apertura della pagina ci saranno le schede da 1 a 5 con i contenuti completi, e quelle successive, a partire dalla 6, diciamo così vuote. Ci sarà perciò un div scheda6 ma senza contenuti, un div scheda7 sempre senza contenuti, e via così.
    Allo scroll di pagina, si dovrebbe caricare il contenuto della scheda6, poi della 7, etc etc.
    Questo, lo schema generale di massima.
    Vediamo adesso come è costruita la pagina.
    I contenuti di ciascuna scheda vengono caricati dinamicamente dal database, con una query fatta così:
    Codice PHP:
    $result mysql_query("SELECT * FROM `offerte` WHERE ('$currentmonth' <= MONTH(`data_out`) AND '$currentyear' <= YEAR(`data_out`)) AND `data_out` >= '$today' AND `show_hide` != '$sh' GROUP BY `id_hotel` ORDER BY `hotel_pos`,`inter_pos`,`data_in` ASC");
    while (
    $row mysql_fetch_array($result)) {
    ... 
    Prima di fare la query, creo una variabile:
    Codice PHP:
    $fivelimit 5
    e quindi, ad un certo punto, creo una condizione if/else che carica i contenuti nei div schedaX, fintanto che il valore numerico che identifica ciascuna scheda è inferiore o uguale a $fivelimit. Da quel punto in poi, vengono creati i div schedaX, ma vuoti di contenuti.

    Fin qui, tutto funziona perfettamente.

    Attraverso una funzione AJAX request, richiamata allo scroll di pagina, viene interrogata un'altra pagina PHP, che dovrebbe fornire i contenuti richiesti dalla pagina principale, dove poi vengono inseriti nel div schedaX relativo.
    Il codice della request è fatto così:
    Codice PHP:
    ...
    var 
    http createRequestObject();
    function 
    sndReq(action) {
    http.open('get''loadimg.php?action='+action); 
    http.onreadystatechange handleResponse
    http.send(null);

    function 
    handleResponse() { 
    if (
    http.readyState == 4) { 
    var 
    response http.responseText
    var 
    myimages response.split('§');
    var 
    first myimages[0];
    var 
    number myimages[1];
    document.getElementById("scheda"+number).innerHTML first;
    incrementa(); 
    La funzione incrementa è questa:
    Codice PHP:
    var number 6;
    function 
    incrementa() {
        
    number parseInt(number)+1;

    E la request viene inviata con questa stringa:
    Codice PHP:
    sndReq('step'+number); 
    La pagina PHP che riceve la request ha questo codice:
    Codice PHP:
    switch($_REQUEST['action']) {
            case 
    'step6'$contatore 6; break;
            case 
    'step7'$contatore 7; break;
            case 
    'step8'$contatore 8; break;
    (
    etc etc)

    Quindi parte la query:
    Codice PHP:
     $result mysql_query("SELECT * FROM `offerte` WHERE ('$currentmonth' <= MONTH(`data_out`) AND '$currentyear' <= YEAR(`data_out`)) AND `data_out` >= '$today' AND `show_hide` != '$sh' GROUP BY `id_hotel` ORDER BY `hotel_pos`,`inter_pos`,`data_in` ASC LIMIT $contatore,1"); 
    while (
    $row mysql_fetch_array($result)) {
    ...
    echo 
    $contenuto "§" $contatore ;

    Il problema che riscontro, in seguito allo scroll e la conseguente request AJAX, è questo:
    - il caricamento avviene
    - la numerazione corrisponde (faccio un echo della variabile $contatore) a quella del div scheda in cui avviene il caricamento
    - il primo contenuto caricato (scheda6) è sempre quello della scheda3!
    - la scheda7 carica il contenuto che andrebbe nella scheda8, e così via...
    - questo schema non cambia, anche se vario il valore iniziale della variabile $number nel JS della pagina, o quello della variabile $contatore nel PHP...

    Quello che non capisco proprio è come sia possibile che due query identiche, di cui la seconda ha in più solo la limitazione ad 1, ed a partire dall'elemento n (determinato dalla variabile $contatore), diano risultati diversi!
    Non credo che il problema sia lato AJAX perchè il dato fondamentale che viene gestito da questo è il dato numerico che identifica il div scheda, ma quello corrisponde sempre...

    Please, help me!!!!
    metatad
    graphic & web design

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    No help???
    metatad
    graphic & web design

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 © 2024 vBulletin Solutions, Inc. All rights reserved.