Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Visto che il dispositivo è protetto da basic authentication a questo punto credo che l'unica soluzione sia questa:

    potresti effettuare chiamate ajax alla tua risorsa php, che a sua volta ha recuperato i dati dal dispositvo, cosi eviti il refresh della pagina.
    Perchè una chiamata jsonp non effettua una richiesta http e di conseguenza credo non sia possibile definire l'header con user/psw. Non ho mai provato ma a rigor di logica non dovrebbe essere possibile.

    Per sapere come effettuare una richiesta al server con basic auth in php puoi chiedere nella relativa sezione.

    - usando il metodo che mi hai detto tu per byassare il "limite di dominio" imposto dai browser e quindi creare un files php che effettua le richieste e non utilizzando JsonP devo passare comunque qualche funzione alla getJSON (anche se non di callback)?
    Direi di no, è una semplicissima richiesta ajax, insomma dipende come è implementata la parte php, se per operare ha bisogno di dati in input li passi tramite la richiesta ajax altrimenti no.

    Per la gestione degli errori, visto che la chiamata avviene da php, devi gestirli con php, al massimo puoi inviare al client il codice di errore che hai ricevuto, e il client a sua volta mostrerà l'errore. Per esempio se invii un 403 al client, in jquery puoi gestirlo in questo modo:

    codice:
    $.ajax({
    
      statusCode: {
    
        403: function() {
    
    
          //forbidden exception
    
    
        }
    
      }
    
    });
    Per gli errori generici puoi usare l'attributo error

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    76
    Mi sono perso...

    Dunque io ho la mia pagina (per es info_disp.php/html) che vedo dal browser che visualizza i dati del dispositivo con cui devo comunicare...questa pagina al caricamento e poi ogni tot secondi effettua una richiesta asincrona (ajax) ,per non dover fare il refresh della pagina.
    La pagina che riceve la richiesta si chiama ad esempio "json_requester.php" ed è sullo stesso server su cui è la pag info_disp.

    JsonRequester.php deve efettuare la "richiesta" dati al dispositivo (su ip esterno) nell'header della richiesta devo inserire user e pass per la basic autentication, url esterno a cui mandare la richiesta.
    Questo per bypassare il limite di "dominio" imposto dal browser lo faccio lato server, quindi non con JS Jquery? come lo mando in solo php?

    ammesso che riesca a fare questo mi viene restituito dal dispositivo un oggetto Json che io posso, usando jsondecode, "parsificare" per php oppure restituirlo così com'è alla pag iniziale info_disp.php?

    se per caso qualcosa nella richiesta non va a buon fine devo (dalla pag JsonRequester.php) controllare se l'errore è nell' header http (es 404) oppure se nel Json viene restituito qualche messaggio anomalo (es kokokokoko oppure {error code 154: the client does not respond} o altro) per analizzare questo errore da php devo usare jsondecode questo metodo in caso l'oggetto json restituito non sia in formato json che fa? restituisce comunque la Stringa o si limita a dare formato non supportato?

    a seconda dell' errore devo asp un tot di tempo e rifare la richiesta con basic auth se l'errore si ripete 3 volte lascio perdere e restituisco errore alla pag iniziale info_disp.php

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    info_disp.php/html --> JsonRequester.php
    chiamata ajax ciclica (ti trovi sullo stesso dominio quindi non ci sono problemi di sorta), per effettuare più richieste puoi creare un metodo ricorsivo e per aspettare un tot di tempo puoi usare la funzione setTimeout
    JsonRequester.php --> dispositivo
    chiamata al dispositivo con basic auth (per come effettuare questa chiamata chiedi nella sezione php dove sono sicuramente più preparati di me)
    dispositivo --> JsonRequester.php
    il dispositivo invia il json o un errore che dovrai intercettare con php (anche qui puoi chiedere nella sezione php), la stringa inviata è già un json quindi non dovresti effettuare nessun parse ma inviarlo cosi com'è al client, il parse è utile solo per verificare che il formato inviato corrisponda esattamente ad un json
    JsonRequester.php --> info_disp.php/html
    viene inviato al client il json o il messaggio di errore, in caso di json corretto il client (cioè jquery) elabora il json, in caso di errore non fa nulla intanto dopo un tot di tempo verrà inviata una nuova richiesta, se riceve errore tre volte(puoi usare una variabile globale) mostra il messaggio di errore a video e stoppa il timing.
    Per questo ultimo passo posso darti una mano io, posso mostrarti, se già non lo sai, come accedere alle varie informazioni presenti nel json, e come effettuare una chiamata ciclica dopo tot secondi.
    Prima però chiedi il trasferimento nella sezione apposita, quando funzionerà il resto chiedi di essere spostato ancora qui per completare il processo.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    76
    Ok grazie mille.

    Il controllo errori ed il re-invio della "chiamata" mi sarebbe piaciuto farlo nello stesso JsonRequester.php in modo che a meno di 3 errori consecutivi all'Info_disp.php tutta la procedura dei ri-tentativi fosse invisibile.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    non ci avevo pensato, certo puoi farlo direttamente da php intanto il client rimarrà in attesa fin quando JsonRequester.php non gli invia una risposta.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    76
    Purtroppo non ho avuto risposte in sezione php, comunque sono riucito a ricevere tramite php l'oggetto JSON, per il momento accantonerei un attimo la gestione egli errorri ed i ritentativi e vorrei iniziare a configurare la richiesta ajax, per fare ciò preferirei usare JQuery. Avrei un paio di domande:

    -dovendo far partire la richiesta da JS non ho la possibilità di utilizzare i valori memorizzati in sessione nè eventuali oggetti php creati, dovrei quindi inserire tali dati al caricamento della pagina in qualche form nascosto, giusto?

    -come setto la richiesta ajax? ho la possibilità di "inoltrare" direttamente l'oggetto JSON ricevuto, altrimenti potrei da php "scremare" i dati del JSON prendendo solo quanto strettamente necessario e poi riconvertirli in JSON oppure mandarli tramite ajax in quale altro formato?

    -può esseremi di qualche utilità modificare il php in modo che mandi dati direttamente ad una funzione di callback? quindi JSONP?

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    -dovendo far partire la richiesta da JS non ho la possibilità di utilizzare i valori memorizzati in sessione nè eventuali oggetti php creati, dovrei quindi inserire tali dati al caricamento della pagina in qualche form nascosto, giusto?
    puoi salvarli come campi hidden del form o valorizzare delle varaibili globali js

    come setto la richiesta ajax? ho la possibilità di "inoltrare" direttamente l'oggetto JSON ricevuto, altrimenti potrei da php "scremare" i dati del JSON prendendo solo quanto strettamente necessario e poi riconvertirli in JSON oppure mandarli tramite ajax in quale altro formato?
    Usa il formato json, io li scremerei prima di invarli a js, non che cambi moltissimo se non lo fai in php dovrai farlo dopo in js. Come effetturare la chiamata puoi vederlo direttamente dal sito di jquery, ci sono svariati esempi.

    -può esseremi di qualche utilità modificare il php in modo che mandi dati direttamente ad una funzione di callback? quindi JSONP?
    che centra jsonp?

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.