获取jsonp时授权标头错误

时间:2016-04-15 14:04:51

标签: javascript jquery json

我试图从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      }

我有以下疑问:

  1. 我是否正在做jsonp的事情?

  2. 我是否正确包含两个脚本:

  3. 语言=&#34;的JavaScript&#34;类型=&#34;文本/ JavaScript的&#34; SRC =&#34; jquery的-1.12.3.js&#34;&GT;和主要的脚本。

    当然,为什么会出错。

1 个答案:

答案 0 :(得分:0)

语法错误是缺少逗号

dataType:"jsonp",
//              ^

在header对象之后还有一个额外的},这将是另一个语法错误,将其更改为逗号。

    headers:{'Authorization':'Basic ' + azureKey      }
    ,
//  ^ comma not a }

您将无法使用authorization标头与JSONP,这是不可能的。如果该服务支持CORS(它看起来像它),那么您可以通过将dataType设置为json来使用正常的XHR。