【问题标题】:Authorization headers error while getting jsonp获取jsonp时授权标头错误
【发布时间】:2016-04-15 14:04:51
【问题描述】:

我正在尝试从 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. 我是否正确包含两个脚本:

language="JavaScript" type="text/javascript" src="jquery-1.12.3.js"> 和主脚本。

当然,为什么会出错。

【问题讨论】:

    标签: javascript jquery json


    【解决方案1】:

    语法错误是缺少逗号

    dataType:"jsonp",
    //              ^
    

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-04-17
      • 2017-03-07
      • 2014-07-31
      • 2016-09-14
      • 2017-07-07
      • 1970-01-01
      • 2019-05-30
      • 2017-11-23
      • 2014-09-19
      相关资源
      最近更新 更多