用原始JavaScript获取JSONP?

时间:2013-12-01 17:28:19

标签: javascript json get jsonp

我想在原始JavaScript(没有jQuery)中从外部域读取JSONP数据 让我们说https://www.domain.com/abc.php?foo=bar
包含:{"error":false,"data_a":"abcabc","data_b":"123-456"}

我在谷歌上找不到这个。但如果我理解正确,它应该是这样的:

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <script>
    script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "https://www.domain.com/abc.php?foo=bar&callback=DataCallback";
  </script>
</head>
<body>
  <script>
    function DataCallback(data) {
        for (var key in data) {
            var value = data[key];
            alert(key+' = '+value);
        }
    }
  </script>
</body>
</html>

我没有收到错误,但我也没有收到任何警告。

是的,我注意到了 https://www.domain.com/abc.php?foo=bar

https://www.domain.com/abc.php?foo=bar&callback=DataCallback
两者都在浏览器中显示{"error":false,"data_a":"abcabc","data_b":"123-456"} 这可能是问题吗?因为我认为第二个链接应该显示:
DataCallback({"error":false,"data_a":"abcabc","data_b":"123-456"})

2 个答案:

答案 0 :(得分:2)

你有两个问题。


您永远不会发送请求

您必须先将脚本元素添加到文档中才能执行。

document.body.appendChild(script);

(不要在身体存在之前或在定义回调函数之前尝试这样做)


服务器未响应JSONP

您无法像处理JSONP一样处理普通JSON。服务器正在使用JSON进行响应(当我尝试它时,它会回复一个购买域名的广告...也许你的意思是example.com?)

答案 1 :(得分:0)

我有完整的纯javascript jsonp示例...

您可以查看是否需要

https://github.com/toosha01/ajax-javascript