Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    19

    Uncaught SyntaxError: Unexpected end of JSON input

    Salve a tutti.
    Sto cercando di passare un array ottenuto dal database aprendo un file PHP quando viene eseguita una certa funzione javascript.
    Tuttavia la funzione che dovrebbe prendere i dati da PHP in JS è come se non venisse eseguita:

    JAVASCRIPT:
    codice:
        var xhr = new XMLHttpRequest();    method = "GET",
        url = "notifiche.php?notifica=1";    
        xhr.open(method, url, true);
      
        xhr.onreadystatechange = function (){ // non entra qui dentro
                if(xhr.readyState === 4 && xhr.status === 200){
                var oggetto = JSON.parse(xhr.responseText);
        
            }
    
    
        xhr.send();

    PHP:
    codice:
    <?php
    include("config.php");
    session_start();
     if($_GET["notifica"]==1){
    $query=...
          ...
    
          $result=$mysqli->query($query);    
             $ris=array();
           for($i=0;$row=$result->fetch_assoc();$i++){
            $ris[$i]=$row;
          }
          var_dump($ris);
     $data=(json_encode($ris));
     echo $data;
     }
    
    
    
    
    ?>
    La query ho provato ad eseguirla direttamente sul DB e funziona. Ci deve essere qualche errore nella stampa in PHP o nella lettura da JS...

  2. #2
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    dopo method=GET ci vuole il punto e virgola
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    19
    Corretto, continua a non entrare in quella funzione però...

  4. #4
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    Quote Originariamente inviata da davide57 Visualizza il messaggio
    Corretto, continua a non entrare in quella funzione però...
    codice:
    var xhr = new XMLHttpRequest();    method = "GET";
        url = "notifiche.php?notifica=1";    
        xhr.open(method, url, true);
      
        xhr.onreadystatechange = function (){ // non entra qui dentro
                if(xhr.readyState === 4 && xhr.status === 200){
                var oggetto = JSON.parse(xhr.responseText);
        
            }
    
    
    }
        xhr.send();
    mancava pure una parentesi. usa il debugger dei browser non andare a tentoni
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    19
    Continua a non funzionare :'(

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    19
    Continua a non entrare in quel pezzo di codice che ho segnalato...

  7. #7
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, provando in locale questo
    codice:
    var xhr = new XMLHttpRequest();
    var method = "GET";
    var url = "http:....../?notifica=1";    
    xhr.open(method, url, true);
    xhr.onreadystatechange = function (){ // non entra qui dentro
    	console.log(xhr.status,xhr.readyState)
            if(xhr.readyState === 4 && xhr.status === 200){
            var oggetto = JSON.parse(xhr.responseText);		
            console.log(oggetto)	
        }
    }
    
    
    xhr.send();
    e avendo nel mio php solo
    codice:
    echo json_encode(array(1,2));
    funziona correttamente. In oggetto vedo loggare il mio array/obj .

    Non è che lato php oltre a mandare l'echo di questo mandi altro? o se lo script stesso oltre a mandare questo renderizza qualcosa?
    Anche se non lo vedi via JS potrebbe dar fastidio. Nella risposta devi avere solo quello.
    Nel mio caso d'esempio ho messo in testa a tutto (dato che la pagina è una pagina html completa)
    codice:
    if($_GET['notifica']){
    	echo json_encode(array(1,3)); die;
    }

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    19
    Mah, non riesco proprio a farla funzionare a tratti mi da quell'errore del titolo, altre volte non vede l'oggetto...
    Mi potete dire voi un'alternativa? Spiego più nel dettaglio:

    Quello che voglio fare è un sistema di notifiche. L'utente si trova nella pagina principale che ha un menu in alto con l'icona delle notifiche. Ogni volta che avviene un'azione che lo coinvolge gli si colora l'icona e quando ci clicca si apre un menu a tendina con le ultime 5-6 notifiche arrivate.
    Queste notifiche le dovrebbe ricavare da un file PHP che effettua la SELECT dei dati dal db ottenendo un array multidimensionale con dentro tutte le notifiche con le relative informazioni. Siccome vorrei evitare di aggiornare la pagina ogni volta che arriva una notifica, questa matrice va passata al javascript che poi si occuperà di inserire i dati ottenuti nel menu a tendina...
    Sono bloccato, non riesco proprio a risolvere!

  9. #9
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Dal titolo del thread probabilmente quello che c'è nell'array va encodatao come si deve. Qualche carattere strano spacca la stringa e risulta non valido. Probabilmente se provi a fare un echo 'CIAO'; non avrai problemi.
    Prova una delle varie opzioni per encodare http://php.net/manual/en/function.json-encode.php

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    19
    Quote Originariamente inviata da m4rko80 Visualizza il messaggio
    Dal titolo del thread probabilmente quello che c'è nell'array va encodatao come si deve. Qualche carattere strano spacca la stringa e risulta non valido. Probabilmente se provi a fare un echo 'CIAO'; non avrai problemi.
    Prova una delle varie opzioni per encodare http://php.net/manual/en/function.json-encode.php
    Sono riuscito finalmente a trasmettere il dato ma quello che ottengo è una variabile testuale con dentro stampato tutta la matrice:

    [["1","PROVA","0","0"],["2","PROVA2","0","0"],["3","PROVA3","1","0"]] (esempio ristretto)


    c'è modo di trasformare questa roba in un array bidimensionale accessibile con indici?

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.