Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Discussione: Json

  1. #1

    Json

    Sto utilizzando Json.php per fare un lavoretto simile a questo
    http://extjs.com/learn/Tutorial:Grid_PHP_SQL_Part1
    Ma ho un problema... Mi da ripetuti errori nel file json.php di questo tipo
    Uninitialized string offset...
    Le righe dove si trovano gli errori sono quelle di pack('C*', $ord_var_c, ord($var{$c + 1})...

    Io suppongo sia dovuto al fatto che quando trova caratteri speciali, mi fa un pack tra quel carattere ed il successivo, e se non lo trova da ovviamente errore.

    Ma possibile che un tale bug non sia ancora scoperto e risolto?

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Bisognerebbe vedere che file è quel json.php.

    In php5 l'estensione php-json è nel core di php, in php4 esiste come estensione PEAR.

    Io quando mi trovo su php4 uso una classe chiamata "Services_JSON" (che dovrebbe essere quella da cui si è partiti per creare l'estensione PEAR).

    Non ricordo se mi sono trovato nel tuo caso ma non mi ha dato mai errori.

    Se non puoi usare l'estensione di php5 o installare la classe PEAR posso mandarti il file che uso io.

    ciao

  3. #3
    Guarda, il mio codice è questo, che a seconda se ho php5 o no mi fa partire la libreria o il file

    codice:
    function JEncode($arr){
    	if (version_compare(PHP_VERSION,"5.2","<"))
        {   
    		require_once("./JSON.php");   //if php<5.2 need JSON class
            $json = new Services_JSON();  //instantiate new json object
            $data=$json->encode($arr);    //encode the data in json format
        } else
        {
    		$data = json_encode($arr);    //encode the data in json format
        }
        return $data;
    }
    Mentre il file Json.php è il package Services_JSON versione 1.30

    L'errore me lo dà solo per caratteri speciali, come accenti. Altrimenti funziona correttamente

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Sei sicuro che non ci siano di mezzo problemi di charset?

    Per quanto riguarda il tuo controllo, io lo cambierei con

    if(function_exists('json_encode'))

    perchè comunque json è un'estensione che può essere abilitata oppure no, quindi nel caso di versioni di php 5.2 in cui è stata disabilitata otterresti un errore (lo so, è una pignoleria, però è più corretto).


  5. #5
    Guarda non penso sia un problema di charset.
    Il file JSON.PHP l'ho preso da qui update.peopleaggregator.org/svn/release/tags/v1.0/web/JSON.php

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    riesci a riprodurre l'errore in 3 righe di codice cosi lo provo pure io ?

    ciao

  7. #7
    L'errore è

    Notice: Uninitialized string offset: 8 in /var/www/vhosts/ecmadistanza.it/httpdocs/prova/JSON.php on line 308

    Però ripetuto più volte anche sulle righe 309, 320, 321, 331, 332, 333, 334,
    Praticamente tutte quelle con contenuto del tipo ord($var{$c + 1})

    Ho provato a stampare il carattere che mi da errore con un echo $var{$c} in tutte le righe d'errore e mi ha dato una ì accentata.

    Non so come riprodurti l'errore, io uso questo script che prende i dati dal mio db

    codice:
    function getList(){
    	$query = "select id_utente, nome, cognome, usern from tbl_ana_utenti, tbl_ana_prof_sanitaria where tbl_ana_utenti.id_prof_sanitaria=tbl_ana_prof_sanitaria.id_prof_sanitaria";
    	$result=mysql_query($query);
    	$num=mysql_num_rows($result);
    	if ($num>0){
    		while($utente=mysql_fetch_array($result)){
    			$arr[] = $utente;
    		}
    		$jsonresult = JEncode($arr);
    		echo '({"total":"'.$num.'","results":'.$jsonresult.'})';
    	} else {
    		echo '({"total":"0", "results":""})';
    	}
    }

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    intendevo dire se mi puoi passare la stringa incriminata, cosi provo anche io a fare l'encode


  9. #9
    Tutte quelle che terminano con accento...

    Ad esempio Corfù, KaKà, Marà...

    Scusa, e grazie della disponibilità

  10. #10
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Ti posso assicurare che io non ho mai avuto problemi in questo senso.

    Io uso questa se vuoi provarla:

    http://lab.gianiaz.com/source/php-json.phps

    Ma comincio davvero a pensare che sia un problema di charset.

    Come ricevi questi dati? tramite una chiamata ajax?


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.