使用 $.ajax 请求获得成功结果,但使用 $http 请求获得错误 500

Getting successful result with $.ajax request but Error-500 with $http request

我正在开发一个小型 Web 应用程序,它通过从另一台服务器访问数据来简化创建和填充 USPTO IDS 表单的过程。为了访问数据,我正在使用 API - http://ops.epo.org/3.1/rest-services/published-data/publication/epodoc/US9623902/biblio.js.

我是用 angular 做的,因此我用了 $http 但它抛出了 错误 500(内部服务器错误)。在使用 ajax-request 时,它工作正常。事实上,任何其他方法,如 $.get() 而不是 ajax 都会抛出相同的错误,即使我使用 ng-resource get 方法但没有帮助。我没有明白我做错了什么。

这是我的代码 -

$.get( "http://ops.epo.org/3.1/rest-services/published-data/publication/epodoc/US9623902/biblio.js",
function( data ) {
    vm.inventors = data['ops:world-patent-data']['exchange-documents']['exchange-document']['bibliographic-data']['parties']['inventors']['inventor'];
    console.log(vm.inventors);
});


var req = {
    method: 'GET',
    url: 'http://ops.epo.org/3.1/rest-services/published-data/publication/epodoc/US9623902/full-cycle.js',
   };
$http(req).then(function(response){
   console.log(response);
}, function(response){
    console.log(response);
});

这两个代码都抛出错误 500。这是图像

这段代码运行良好。但是这里我遇到了页面加载问题,页面在数据绑定到 $scope 之前加载,因此没有显示在页面上。

  $.ajax({
     url: 'http://ops.epo.org/3.1/rest-services/published-data/publication/epodoc/' + 'US9623902' + '/biblio.js',
     type: 'GET',
     dataType: "jsonP",
     success: function(data) {
         vm.inventors = data['ops:world-patent-data']['exchange-documents']['exchange-document']['bibliographic-data']['parties']['inventors']['inventor'];
         console.log(vm.inventors);
     },
     error: function(XMLHttpRequest, textStatus, errorThrown) {
        vm.errorContent = [{
            heading: "Error",
            description: "Could not load json data "
        }];
        return false;
    }
});

成功结果图片

如有任何帮助,我们将不胜感激。谢谢。

如果您将 x-www-form-urlencoded 用作 header,您可能需要转换您的请求。

var req = {
  method: 'GET',
  url: 'http://ops.epo.org/3.1/rest-services/published-data/publication/epodoc/US9623902/full-cycle.js',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  },

  transformRequest: function(obj) {
        var str = [];
        for(var p in obj)
        str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
        return str.join("&");
    },
};

我没有明白我的 "GET" 请求中的问题所在。但是 "jsonP" $http 的方法确实解决了这个问题。

@Sachila - 由于没有发送数据,因此不需要转换。