Czekam na zbudowanie skryptozakładki między lokacjami, która otrzyma wyróżnione słowo, przekazuje ją do metody CodeIgniter (domain.com/controller/method) i zwraca definicję za pośrednictwem słownik API. Mam szkielet działający dobrze na pojedynczej domenie, ale zamierzam rozszerzyć go, aby korzystać z cross-domeny JSONP. Ale czuję się niejasna.JSONP dla międzywęzłówowego przewodnika zakładek
Wiem, że muszę załadować skrypt ze zdalnej lokalizacji i wstrzyknąć go w bieżącym kontekście. Sądzę, że muszę pobrać wyróżnione słowo na stronie, a następnie wywołać adres URL wyglądający jak domain.com/controller/method/word, aby uzyskać ten skrypt. Potem robi się mgliście.
Chyba mają zasadniczo dwa pytania:
- Gdzie mogę to niezbędne do obsługi javascript analizowania i przekazywanie słowa poprzez XMLHttpRequest? Myślę, że będzie to SRC skryptu, który wprowadzę w nowym kontekście. Czy jest to w jakiś sposób w mojej odpowiedniej metody CodeIgniter? A może ten nowy skrypt pochodzi z losowej lokalizacji na tym samym serwerze, co odpowiednia metoda i po prostu do niej zadzwonić?
Odpowiedź: ta nie stanowi uzupełnienie XMLHttpRequest, to zamiast niej, tak że krok jest całkowicie usunięte. Nowy skrypt wywołuje metodę, przekazuje wymagane informacje za pośrednictwem ciągów zapytań i otrzymuje tablicę JSON w odpowiedzi.
- Czy mam rację w zrozumieniu, że ostatecznie przekażę odpowiedź JSON z metody z powrotem jako
word(json_encode($array));
?
Odpowiedź: Tak, będę z powrotem przekazać, że jak callbackFunctionName(json_encode($array));
.
- Czy muszę ustawić nagłówki, as done here?
Aktualizacja
I zawierał odpowiedź na dwóch moich trzech odpowiedzi powyżej. Jeśli ktoś potrafi dokładnie wyjaśnić rzeczy, oczywiście zaznaczę ich odpowiedź jako poprawną, inaczej rozwiążę moje potknięcia w odpowiedzi. Nadal nie mam pojęcia gdzie Piszę funkcję zwrotną i co będę robić z tym w JS.
Dziękuję bardzo za pomoc w tej sprawie.
Hej Mic, jestem trochę zdezorientowany. To jest bookmarklet, o którym mówimy, więc jak mógłbym umieścić na początku skrypt w ciele? Cokolwiek chcę użyć, muszę go wstrzyknąć, prawda? –
Mam nadzieję, że to drugie ujęcie pomoże. – Mic
Hej Mic, twoja pomoc mnie uruchomiła! W mojej skryptozakładce wstrzyknąłem swój skrypt pomocniczy za pomocą funkcji samoczynnego wykonywania, a w tym skrypcie pomocniczym zawarłem wszystkie moje JS i funkcję samo-wykonującą, aby wywołać moją metodę, która zwraca metodę ({jsonData}). W tym samym skrypcie pomocniczym mam funkcję o nazwie metoda (jsonp), która odbiera i przetwarza dane. Pozostało mi tylko jedno pytanie: dlaczego funkcja oddzwaniania przy pierwszym wstrzyknięciu? ** –