【问题标题】:Retrieving jsonp data from external domain using jquery使用 jquery 从外部域检索 jsonp 数据
【发布时间】:2013-01-09 00:22:18
【问题描述】:

我使用的是我在互联网上获得的示例代码,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 不起作用。谢谢。

【问题讨论】:

标签: jquery ajax json jsonp


【解决方案1】:

json 在这种情况下是一个 javascript 对象。只需从其属性中提取数据。

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

【讨论】:

    【解决方案2】:

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

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

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

    function jsonp1357658534513(string){
        console.log(string);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      相关资源
      最近更新 更多