使用 $.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 - 由于没有发送数据,因此不需要转换。
我正在开发一个小型 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 - 由于没有发送数据,因此不需要转换。