Sto cercando di creare un bookmarklet tra siti che ottenga una parola evidenziata, lo passa a un metodo CodeIgniter (domain.com/controller/method) e restituisce la definizione tramite un'API del dizionario. Ho uno scheletro che funziona bene su un singolo dominio, ma sto cercando di estenderlo per utilizzare il dominio incrociato JSONP. Ma non mi sento chiaro.JSONP per indicazioni di bookmarklet intersito
So che ho bisogno di caricare uno script da una posizione remota e iniettarlo nel contesto corrente. E credo che avrò bisogno di ottenere la parola evidenziata su una pagina, quindi chiamare un URL che assomigli a domain.com/controller/method/word per ottenere quello script. Poi diventa nebbioso.
penso essenzialmente due domande:
- Dove faccio a includere il codice JavaScript necessario per gestire l'analisi e la scomparsa della parola tramite XMLHTTPRequest? Penso che questo sarà l'SRC della sceneggiatura che inserirò nel nuovo contesto. Questo è in qualche modo all'interno del mio metodo CodeIgniter rilevante? O questo nuovo script proviene da una posizione casuale sullo stesso server del metodo pertinente e chiama semplicemente?
Risposta: Questo non è complementare a XMLHTTPRequest, questo è in sostituzione di esso, in modo che la fase viene completamente rimosso. Il nuovo script chiama il metodo, passa le informazioni necessarie tramite stringhe di query e riceve la matrice JSON in risposta.
- Sono a conoscenza che alla fine passerò la risposta JSON dal metodo come
word(json_encode($array));
?
Risposta: Sì, io passo che indietro come callbackFunctionName(json_encode($array));
.
- Devo impostare le intestazioni, as done here?
Aggiornamento
ho incluso le risposte a due dei miei tre risposte di cui sopra. Se qualcuno può spiegare le cose a fondo, naturalmente segnerò la loro risposta come corretta, altrimenti elaborerò i miei ostacoli in una risposta. Non ho ancora idea di dove scrivo la funzione di callback e cosa farò con quello in JS.
Grazie mille per l'aiuto che puoi dare su questo.
Hey Mic, sono un po 'confuso. Questo è un bookmarklet di cui stiamo parlando, quindi come dovrei inserire uno script nel corpo per cominciare? Qualunque cosa io voglia usare, ho bisogno di iniettarlo, giusto? –
Spero che questa seconda ripresa ti possa aiutare. – Mic
Hey Mic, il tuo aiuto mi ha fatto andare! Nel mio bookmarklet, ho iniettato il mio script secondario tramite una funzione autoesecutiva, e in quello script secondario, ho incluso tutto il mio JS e una funzione autoeseguibile per chiamare il mio metodo, che restituisce il metodo ({jsonData}). E nello stesso script secondario, ho una funzione chiamata metodo (jsonp) che riceve e analizza i dati. L'unica domanda che mi rimane è, ** perché la funzione di callback dell'iniezione iniziale? ** –