我试图从Bing Search API获取json数据。
我所做的就是这个
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script language="JavaScript" type="text/javascript" src="jquery-1.12.3.js"></script>
<script>
$(document).ready(function() {
var appId = ':mykey';
function getNews() {
//console.log("DF");
var azureKey = btoa(appId);
var myUrl = 'https://api.datamarket.azure.com/Bing/Search/v1/News?Query=%27britain%27&$format=json';
$.ajax({
method: 'post',
url: myUrl,
dataType:"jsonp"
//Set headers to authorize search with Bing
headers:{'Authorization':'Basic ' + azureKey }
}
success: function(data) {
console.log("DF");
//console.log(data);
var json = data.d.results[1].Url;
document.getElementById("demo").innerHTML = json;
},
error: function(jqXHR, error, textStatus) { console.error(jqXHR, error, textStatus); }
});
};
getNews();
});
</script>
</body>
</html>
当我尝试运行它时,控制台中出现以下错误:
Uncaught SyntaxError: Unexpected identifier
为行
headers:{'Authorization':'Basic ' + azureKey }
我有以下疑问:
我是否正在做jsonp的事情?
我是否正确包含两个脚本:
语言=&#34;的JavaScript&#34;类型=&#34;文本/ JavaScript的&#34; SRC =&#34; jquery的-1.12.3.js&#34;&GT;和主要的脚本。
当然,为什么会出错。
答案 0 :(得分:0)
语法错误是缺少逗号
dataType:"jsonp",
// ^
在header对象之后还有一个额外的}
,这将是另一个语法错误,将其更改为逗号。
headers:{'Authorization':'Basic ' + azureKey }
,
// ^ comma not a }
您将无法使用authorization
标头与JSONP,这是不可能的。如果该服务支持CORS(它看起来像它),那么您可以通过将dataType设置为json
来使用正常的XHR。