我想在原始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{"error":false,"data_a":"abcabc","data_b":"123-456"}
这可能是问题吗?因为我认为第二个链接应该显示:DataCallback({"error":false,"data_a":"abcabc","data_b":"123-456"})
答案 0 :(得分:2)
你有两个问题。
您永远不会发送请求
您必须先将脚本元素添加到文档中才能执行。
document.body.appendChild(script);
(不要在身体存在之前或在定义回调函数之前尝试这样做)
服务器未响应JSONP
您无法像处理JSONP一样处理普通JSON。服务器正在使用JSON进行响应(当我尝试它时,它会回复一个购买域名的广告...也许你的意思是example.com
?)
答案 1 :(得分:0)