【问题标题】:Uncaught SyntaxError: Unexpected token : , when i access tickets.com json apiUncaught SyntaxError: Unexpected token : ,当我访问tickets.com json api时
【发布时间】:2012-09-21 21:30:12
【问题描述】:

我正在尝试从以下位置获取数据:

http://api.master18.tiket.com/search/autocomplete/hotel?q=mah&token=90d2fad44172390b11527557e6250e50&secretkey=83e2f0484edbd2ad6fc9888c1e30ea44&output=json

我正在使用 jQuery $.ajax 方法,代码写在我的index.html 文件中:

function getAPI() {
    jQuery.ajax({
        url: 'http://api.master18.tiket.com/search/autocomplete/hotel?q=mah&token=90d2fad44172390b11527557e6250e50&secretkey=83e2f0484edbd2ad6fc9888c1e30ea44&output=json',
        type:"get",
        dataType: 'jsonp',
        crossDomain: true,
        jsonp: false,
        success: function(data) { console.log(data); }
    });
}

当我在 Chrome 控制台中尝试时,有一条消息

Uncaught Syntax Error:Unexpected token:

我很困惑是什么问题,谁能帮帮我?

【问题讨论】:

  • api 返回json 而不是jsonp

标签: ajax json api jquery jsonp


【解决方案1】:

返回的内容是 json,而不是您在 dataType 中指定的 jsonp。此外,通过将 jsonp 设置为 false,您可以防止 jquery 将 jsonp 查询字符串附加到 URL,这可能是您使用的 API 返回 json 而不是 jsonp 的原因。我会尝试去掉 jsonp: false 参数。

【讨论】:

  • function getAPI() { jQuery.ajax({ url: 'api.master18.tiket.com/search/autocomplete/…', type:"get", dataType: 'json', crossDomain: true, jsonp: false, success: function(数据){ console.log(数据); } }); }
  • 但是谷歌浏览器的返回值是这样的,“XMLHttpRequest 无法加载api.master18.tiket.com/search/autocomplete/…。访问控制允许来源不允许来源localhost。”
  • 您收到该错误是因为它是一个跨域请求,出于安全原因,浏览器会阻止该请求。 jsonp 让你绕过它。我会尝试将 dataType 切换回 jsonp,并删除 jsonp: false 属性。
猜你喜欢
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-22
  • 1970-01-01
  • 2012-05-17
  • 2019-02-10
相关资源
最近更新 更多