【问题标题】:JSONP request in AngularJS doesn't work like in jQueryAngularJS 中的 JSONP 请求不像 jQuery 那样工作
【发布时间】:2013-10-16 15:24:48
【问题描述】:

我想通过 AngularJS 的 $http 服务请求 Dailymotion API,但它似乎不像在 jQuery 中那样工作。

var url = 'https://api.dailymotion.com/videos?fields=id,audience,onair&ids=xzttq2_c,xrw2w0';

使用 jQuery 请求

jQuery.ajax({
  type: 'GET',
  url: url,
  dataType: 'jsonp',
  success: function(data) {
    console.log('Success', data);
  },
  error: function(data) {
    console.log('Error', data);
  }
});

结果

使用 jQuery,它可以正常工作。我不必使用回调。

Success 
Object {page: 1, limit: 10, explicit: false, has_more: false, list: Array[2]}

使用 AngularJS 请求

$http({
    method: 'jsonp',
    url: url,
    responseType: "json"
}).
success(function (data) {
    console.log('Success', data);
}).
error(function (data) {
    console.log('Error', data);
});

结果

但是对于 Angularjs,它并没有像我预期的那样工作。

Uncaught SyntaxError: Unexpected token : 

【问题讨论】:

    标签: jquery angularjs jsonp angularjs-service


    【解决方案1】:

    将此添加到您的网址:&callback=JSON_CALLBACK

    工作:http://jsfiddle.net/dqcpa/

    来自jQuery'ajax方法documentation

    "jsonp": 使用 JSONP 加载到 JSON 块中。添加一个额外的“?callback =?”到 用于指定回调的 URL 的结尾。

    【讨论】:

    • 我的问题更多:为什么不需要在 jQuery 中添加回调?但我猜 jQuery 只是隐含地添加了&callback=JSON_CALLBACK。谢谢切尔尼夫,我会这么做的。
    • @JMaylin 是的,这正是 jQuery 正在做的事情! (api.jquery.com/jQuery.ajax)
    猜你喜欢
    • 1970-01-01
    • 2015-07-06
    • 2015-06-15
    • 2014-12-10
    • 2014-08-06
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多