2010-03-23 26 views
6

Capisco cosa fa JSON/JSONP, ma non sono un programmatore e non so come estrarre le basi per un semplice utilizzo. Ho letto molto su JSONP e molti esempi su vari usi per JSONP, ma non ho ancora trovato un semplice esempio per recuperare il testo da un'altra pagina (ad esempio http://www.domain.com/external/text.aspx).JSONP come recuperare il testo

Qualcuno potrebbe dare un esempio di una configurazione jQuery/JSONP per il recupero del testo in un div? Penso che sia un uso molto basilare di JSONP.

risposta

13

Prima di tutto, è importante capire che per far funzionare JSONP, il server deve sapere che verrà contattato con una richiesta JSONP. In altre parole, non puoi semplicemente fare una richiesta ad un server casuale e aspettarti che funzioni se il server non è stato preparato correttamente.

Se si conosce un server con un URL progettato per accettare e rispondere alle richieste JSONP, ciò che verrà restituito sarà un'espressione JSON racchiusa in una chiamata a una funzione. La tua pagina includerà quella funzione, e quindi quando i risultati torneranno dal server il browser interpreterà l'espressione JSON e quindi invocherà la funzione.

Quindi, se si vuole fare un servizio che restituisce un bel blocco di testo, si richiama il servizio come questo:

$.getJSON("http://www.domain.com/external/text.aspx?callback=", function(data) { 
    $('#targetDiv').text(data.text); 
}); 

Il codice jQuery sarà preparare tutto in modo tale che il server sarà detto (tramite un parametro chiamato "jsonp" nella richiesta HTTP) il nome della funzione da chiamare (e jQuery stesso costruirà quella funzione per te). Il server dovrebbe rispondere con qualcosa del genere:

jqueryFunctionName({text: "This is a nice block of text."}) 
+0

Grazie mille per dare un esempio semplice. Con la presente ti consiglierò come miglior candidato per il premio Nobel della pedagogia. Puoi anche regalarti un cupcake ... o qualcosa del genere. Una cosa, solo per essere al sicuro: Ho inserito il codice tra i tag appena sotto il codice div HTML. Inoltre ho un collegamento nel tag su jquery-1.4.2.min.js. È giusto? Se è così, non ha funzionato e ciò significa che il server non è configurato per JSONP. Destra? Qui forse spingo il limite, ma puoi anche dare un esempio su come recuperare il testo attraverso un proxy? Lo apprezzo davvero. – Nano

+0

Sì sì - mi dispiace, non stavo cercando di fornire una pagina completa piena di codice. Sì, la tua chiamata a jQuery per recuperare la roba JSON sarebbe all'interno di un tag script e probabilmente all'interno di una sorta di gestore per un evento, forse una risposta a un "clic" o qualcosa del genere. Per quanto riguarda i proxy - supponendo si intenda un proxy HTTP - beh, non dovrebbe esserci nulla di speciale; se riesci ad accedere al server dal browser per un normale URL, non dovresti avere problemi. Non c'è niente di "strano" nella richiesta HTTP per il contenuto JSON. – Pointy

+0

Devo creare il file JSON? – Nano