使用jquery从外部域检索jsonp数据

时间:2013-01-08 15:42:34

标签: jquery ajax json jsonp

我使用我在互联网上获得的示例代码,jquery部分是:

$.ajax({
     url: punctis_content_url + "?url=" + encodeURIComponent(document.URL),
     dataType: 'jsonp',
     success:function(json){
         alert(json);
     },
     error:function(){
         alert("Error");
     }
     });

远程服务器上的php是:

    $arr = array('URL' => $trackUrl, 'param2' => "element2");
    echo($_GET['callback']."(".json_encode($arr).");");

这工作正常,我收到了来自jquery的警报,如果我直接调用我得到的服务器脚本:jsonp1357658534513({"URL":"http:\/\/infoabout.me\/punctis\/punctis.php","param2":"element2"});

问题是,如何生成回调代码?这意味着什么?以及我如何从该json检索数据(URL和param2)因为只使用json.URL不起作用。感谢。

2 个答案:

答案 0 :(得分:0)

在这种情况下,

json是一个javascript对象。只需从其属性中提取数据即可。

alert(json.URL) // $trackUrl value
alert(json.param2) // element2

答案 1 :(得分:0)

jsonp是通过包装javascript函数调用生成的json字符串创建的,对此的PHP示例如下:

$callbackFunction = $_GET['callback'];
echo $callbackFunction . "(" . json_encode($object) . ")";

现在,一旦检索到jsonp函数被调用,这个函数可以使用jQuery,dojo或其他js框架自动连接,或硬编码,你可以,例如编写以下函数,它会在您的具体情况下调用。祝你好运!

function jsonp1357658534513(string){
    console.log(string);
}
相关问题