使用原始JavaScript获取JSONP

Get JSONP with raw JavaScript?

本文关键字:获取 JSONP JavaScript 原始      更新时间:2024-01-18

我想用原始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=数据回调
两者都在浏览器中显示CCD_ 2
这可能是问题所在吗?因为我认为第二个链接应该显示:
DataCallback({"error":false,"data_a":"abcabc","data_b":"123-456"})

您有两个问题。


您从未发送请求

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

document.body.appendChild(script);

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


服务器没有响应JSONP

您不能像处理JSONP一样处理纯JSON。服务器以JSON响应(好吧,当我尝试它时,它以购买域的广告响应……也许你指的是example.com?)

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

如果你想要,你可以看看

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