$ .ajax请求有效,但$ http用于角度返回访问控制允许原始问题

时间:2015-08-12 18:06:40

标签: jquery ajax angularjs http

所以,我有一个脚本使用jQuery通过这个调用向另一个服务器发出请求:

$.ajax({
  url: URL,
  type: 'GET',
  dataType: 'jsonp',
  success:function(data) {
      $.each(data, function(index, element) {
        // success!
      });
  }
});

但是,这在angularjs中会返回一个access-control-allow-origin错误:

  var request = {
    method: 'get',
    url: URL   }   $http(request).
    success(function(data, status, headers, config) {
      // success!
    }).
    error(function(data, status, headers, config) {
      // error!
    });

与另一位开发人员交谈,ajax调用开始工作的唯一方法是在调用中添加 dataType:'jsonp'参数。否则,它会在$ .ajax中返回相同的错误。

我尝试通过请求变量中的'Accept'标头字段提供此功能,并将方法从 get 更改为 jsonp 但它不起作用。是否有一个特定的参数我可以传递给$ http请求,类​​似于数据类型:thr $ .ajax调用中的jsonp会使这个工作吗?

1 个答案:

答案 0 :(得分:3)

使用jQuery,它会自动将callback=somethng添加到正确编写的jsonp服务所需的url。 Angular不会自动执行此操作,而是需要您自己添加参数JSONP_CALLBACK,然后使用自己的回调名称替换该角度。

http://domain.com/myservice?callback=JSONP_CALLBACK