2009-07-02 10 views
3

Ich habe versucht, dies für eine lange Zeit zu lösen und jetzt wissen, warum es nicht möglich ist. Die URLErstellen eines JSONP-Wrapper für JSON-Daten

http://twittercounter.com/api/?username=Anand_Dasgupta&output=json&results=3

gibt eine json, aber wenn ich einen anhängen „& Rückruf = get“ zusammen mit ihm, den Callback-Wrapper-Funktion angeben tut.

Die einzige Lösung ist jetzt, einen Wrapper manuell um die JSON-Daten zu runden.

Meine Frage ist, wie mache ich das. Gibt es in php/javascript bereits einen Code, den ich nach meinen Angaben ändern kann?

Jeder Rat wird geschätzt.

Danke

Anand

Antwort

3

Nun ist der Zweck von JSONP ist die JSON einzuwickeln (die als JavaScript auf der Clientseite ausgewertet werden) in einen Rückruf, der nur der Client die Daten anfordert, kennt. Dies verhindert, dass der Client unerwünschten JavaScript-Code ausführt. Ohne den Rückruf haben Sie das gleiche Problem mit der Ursprungsrichtlinie (was JSONP löst), Sie können also nur die URL anfordern, von der das Skript stammt.

Grundsätzlich müssen Sie den Callback mit PHP, also auf der Serverseite, mit einem Proxy-Skript verbinden. Das Skript ruft die Daten von der anderen URL ab und wickelt sie in einen Rückruf um:

<?php 
    // Don't know on the fly how to request data from another URL in PHP, but it's easy to find out 
    $response = request_url('http://twittercounter.com/api/?username=Anand%5FDasgupta&output=json&results=3'); 
    echo $_GET['callback'] . '(' . $response . ')'; 
?> 
Verwandte Themen