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

时间:2017-12-08 03:13:41

标签: angularjs xmlhttprequest httprequest ajax-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.这是图像

enter image description here

虽然这段代码工作正常。但是在这里我遇到页面加载问题,页面在数据绑定到 $ 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;
    }
});

成功结果的图像

enter image description here

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:0)

如果您使用x-www-form-urlencoded作为标题,则可能需要转换您的请求。

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("&");
    },
};

答案 1 :(得分:0)

我的“GET”请求中没有问题。但是 $ http “jsonP”方法确实解决了这个问题。

@Sachila - 由于未发送数据,因此不需要进行转换。