Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    13

    scrivere json da jquery

    salve a tutti
    il problema di oggi è il seguente:
    vorrei scrivere/modificare un file json che si trovare nel server di hosting attraverso javascript/jquery

    in poche parole ho un file json con le posizioni che ogni bottone deve avere nella pagina, modificando la posizione dal vivo attraverso il mouse la pagina web dovrebbe riscrivere la nuova posizione sul file json in modo che sia recuperabile al prossimo accesso

    avete idea di come si possa fare?

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    non si puo fare con javascript. con javascript invii solo un messaggio json (i dati) ad un url su cui ti risponde un applicazione server side. E' questa applicazione che riceve, legge e memorizza i dati.

    lo stesso discorso vale per la ricezione (GET). tu fai una richiesta ad un url su cui c'è sempre una applicazione server che ti risponde. Questa interpreta la richiesta, eventualmente legge i dati di input, svolge le operazioni, ricava i dati da inviare come risposta e te li restituisce attraverso un payload json. Tutto avviene in un lasso di tempo T ed è per questo che la chiamata ajax è asincrona e lato client tutto cio che si puo e si deve fare dopo la risposta dev'essere wrappato nella function passata come handler all'evento 'success' della chiamata ajax (e spero che con questo ti chiarisca anche il discorso dell'altro post poco piu sotto).

    Per applicazione server side intendo pagine php o qualsiasi altra tecnologia che ospitata nell'opportuno server web, (apache, tomcat, iis, ecc...) consenta di creare applicazioni server side.

    ho dato un occhiata al codice dell'altro post. Il fatto che tu abbia un file che memorizza banalmente le risposte json in chiaro ha poco a che vedere con ajax... a questo punto valorizzavi gli oggetti direttamente lato client. L'usare ajax presuppone che sia necessaria un interazione con un entità "intelligente" e in grado di operare server side.

    quindi, chiarisci con chi di dovere che tecnologia devi usare server side e crea gli opportuni servizi da interrogare con ajax.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    13
    si tratta della mia tesi io ovviamente sono un elettronico alla prese con un webserver per la domotica... sto facendo pezzo per pezzo quindi ogni tanto apporto modifiche anche sostanziali

    la pagina che ora gira su vicki.netsons.org va trasferita su un webserver embed.. ed alcune cose rimarranno invece su server dell'hosting per rendere + affidabile il sistema ma soprattutto meno pesante visto la quantità limitata di memoria del sistema embed

    il file json lo uploaderei con un programma in c# che ho già scritto.. poi caricando l'index e qualcosaltro nel webserver embed dovrei riuscire a giocare con le luci di casa... alcune impostazioni però dell'interfaccia rimangono nel json come ad esempio la disposizione di oggetti draggabili che altro non so che le future luci da accendere

    draggare sulla pianatina di casa una luce vuol dire però modificare il file json in modo tale che al prossimo utilizzo quel particolare oggetto si trovi nella nuova posizione...

    farlo lato embed è da pazzi perché dovrei lavorare in C... un specie di suicidio per questa mole di dati

    proverò con i php che ovviamente non so... vediamo internet cosa offrirà

  4. #4
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    le chiamate ajax che fai devono essere fatte allo stesso url da cui arriva la pagina. Se index.htm lo metti nel sistema embed è li che deve esserci l'applicazione server. Questo è un discorso che ha a che fare con la sicurezza: nessun browser ti consentirà di effettuare chiamate ajax crossdomain.

    detto questo, nell'handler del dragstop va messa una chiamata ajax che invia al server la posizione dell'elemento:

    codice:
    $( '.draggablebind' ).bind( "dragstop", function(event, ui) {
        var d=$(this).position();
        var r=$('#room').position(); //importante
        $( this ).html("left: "+(d.left-r.left-2)+"
    top: "+(d.top-r.top-2));	
    
        $.Ajax({
            url: 'registraPosizione.???', 
            type:post,
            data:{pos: d, orig: r}, //!! bisogna inviare anche un id dell'oggetto !!
            //ecc. ecc.
        });				
    });
    registraPosizione.??? si occuperà di memorizzare 'pos' e 'orig' leggendo i dati post dalla richiesta. I punti ??? li ho messi perchè non ho ben capito quale tecnologia puoi usare lato server embed e in ogni caso a meno di non parlare di .net personalmente non saprei come aiutarti

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    13
    ...........
    che roba complicata povero me

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    13
    con php finalmente ci sono riuscito ho portato tutto in remoto sul web e funge alla grande...
    poi però lho dovuto mettere nel sistema embed... per risparmiare spazio ho tenuto le immagini sull'hosting
    vicki.json e json.php invece li tengo in locale nella memoria del webserver e qui nascono i problemi

    inizialmente l'rrore che mi datava era proprio quello di corss-domain con accesso negato verso l'esterno almeno chrome dice così

    ho quindi reimpostato i link verso il locale e riesco a leggere il json senza problemi ma il php non da segni di vita... niente errori ma non modifica il json rendendo tutto il lavoro di oggi cartastraccia


  7. #7
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    temo che il motivo sia che php non è supportato (o non installato correttamente) dal sistema embed. purtroppo bisogna capire come programmare un servizio li, php o una tecnologia simile sarebbe una manna... Magari prova a fare un post in programmazione mettendo qualche dato relativo alla sched, forse trovi qualcuno che potrebbe indirizzarti sulla strada giusta...

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    se hai bisogno di fare chiamate cross-domain puoi effettuare chiamate jsonp, nel forum trovi varie discussioni a riguardo.

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    13
    con jsonp riesco a passare il locale verso il server quindi è già un buon punto...
    ora per ho questo maledetto errore di parseerror eppure ho fatto mille prove cambiando il file json ad esempio mettendelo dentro a [ ] oppure cambiando il file php che legge il json codificando la stringa di ritorno... aggiungendo l'header ecc ecc ma nada sempre parseerror

  10. #10
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    ma il parse error te lo da chi? Javascript o php?

    jsonp si aspetta come risposta non un json semplice, ma una funzione che abbia come parametro il tuo json.

    In pratica, per fare un esempio spiccio:

    nel tuo codice javascript avrai la funzione elaboraDati

    codice:
    function elaboraDati(datiJson) {
    }
    e nel tuo php anzichè ritornare il tuo oggetto json_encodato, supponiamo:

    codice:
    [{id:1, label:"lampadina"},{id:2, label:"lampadario"}]
    dovrai stampare la stringa:

    codice:
    elaboraDati([{id:1, label:"lampadina"},{id:2, label:"lampadario"}]);
    In pratica js interpreta la stringa come la chiamata alla funzione elaboraDati a cui passi dinamicamente da php il tuo oggetto json.

    vedi se ti può essere utile:

    http://www.ibm.com/developerworks/library/wa-aj-jsonp1/

    Ciao

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.