2010-12-13 11 views
0

Ich baue eine Bookmarklet App mit CodeIgniter und JavaScript/jQuery. Im Moment gibt meine CI-Anwendung nur ein JSON-codiertes Array an das Bookmarklet-Skript zurück, aber offensichtlich kann jQuery das nicht verwenden, da es sich nicht um JSONP-/domänenübergreifende Richtlinienprobleme handelt.JSONP, CodeIgniter und Bookmarklets

Wie kann ich meine CodeIgniter-Funktion veranlassen, JSONP-Ergebnisse zurückzugeben? Ich verstehe JSONP nicht so gut, entschuldige bitte meine Unwissenheit.

+0

ersten post du bist code, zweite setzen sie die richtigen überschriften (http://snippets.dzone.com/posts/show/5882)? –

Antwort

0

JSONP, so weit ich weiß, lädt nur ein Skript von URL, anstatt ein XHR zu machen. Anstatt json/xml/plain-text zurückzugeben, gibt die URL javasript zurück. Das zurückgegebene JavaScript ist lediglich ein Aufruf an eine globale Funktion mit den übergebenen JSON-Daten. jQuery erstellt diese globale Funktion bequem vor der JSONP-Anfrage und sendet sie innerhalb der JSONP-Anfrage als "Callback".

Um es einfach auszudrücken, müssen Sie auf $ _GET ['Callback'] zugreifen (muss $ .get für domänenübergreifende verwenden) es enthält den Namen der Callback-Funktion. Zum Beispiel:

Dies wird Javascript zurück, die die globale JavaScript-Funktion mit den JSON-Daten aufgerufen wird, die an sie übergeben.

Denken Sie daran, dass dies nicht XHR/Ajax ist, sondern dynamisch ein neues DOM-Skript-Element anhängen, Sie können nicht Ihre Daten POST, also keine $ _POST. Wie würden Sie POST-Daten senden, wenn Sie ein Skriptelement in HTML erstellen? Es sind GET-Daten, die nur übergeben werden können: <script src='someurl.php?this=getdatastuff'></script>.

Ich denke, das ist, wie alles funktioniert. xb