AngularJS 中的 JSONP 请求不像 jQuery 那样工作

Posted

技术标签:

【中文标题】AngularJS 中的 JSONP 请求不像 jQuery 那样工作【英文标题】:JSONP request in AngularJS doesn't work like in 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 : 

【问题讨论】:

【参考方案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)

以上是关于AngularJS 中的 JSONP 请求不像 jQuery 那样工作的主要内容,如果未能解决你的问题,请参考以下文章

angularjs中jsonp请求的异常处理

angularjs jsonp跨域请求网络看到了请求值,但是一直走error

Angularjs JSONP不起作用

AngularJS中的JSONP实践

在 AngularJS 中设置 JSONP 回调函数

如何从 angularjs 中的 JSONP 错误回调中获取数据?