Javascript 使用Ajax调用从外部URL获取JSON数据
我想用POST方法调用web服务这是url 我修改了url,因为我工作的公司的隐私,这是一个示例url,但原始url具有相同的结构 我已经在POSTMAN中用这个JSON字符串完成了:Javascript 使用Ajax调用从外部URL获取JSON数据,javascript,ajax,Javascript,Ajax,我想用POST方法调用web服务这是url 我修改了url,因为我工作的公司的隐私,这是一个示例url,但原始url具有相同的结构 我已经在POSTMAN中用这个JSON字符串完成了: { "personid" : "20369" } 在《邮递员》中效果很好,我的状态是200 OK 但是在我的ajax调用中,我得到了一个500错误。net::ERR_中止了500个错误。 这是我的ajax调用: $.ajax({ url: "https://innovation.spa.uvm.mx:22
{
"personid" : "20369"
}
在《邮递员》中效果很好,我的状态是200 OK
但是在我的ajax调用中,我得到了一个500错误。net::ERR_中止了500个错误。
这是我的ajax调用:
$.ajax({
url: "https://innovation.spa.uvm.mx:22580/webs-images/rest/imagx",
type: "POST",
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({
"personid" : "20369"
}),
success: function(result){
console.log(JSON.stringify(result));
},
error: function(exception){
alert("Error" + exception);
}
});
您不是在发出POST请求,而是在发出GET请求 由于以下原因,JSONP无法发出POST请求 Web服务可能需要一个POST请求和错误,因为它没有得到一个POST请求和错误
你可能在那里打了一巴掌
jsonp
,试图规避。只有当您向发出请求的web服务明确地支持JSONP时,JSONP才会这样做(现在不应该支持JSONP,因为我们现在有CORS(CORS提供了更多的控制,并且没有JSONP固有的安全风险)
即使您删除了
jsonp
,您也在声明contentType:'application/json;charset=utf-8',
但是数据的值不是JSON。如果您将一个对象传递给数据
,则使用带有URL的jQuery对其进行编码。如果你想发送JSON,你需要自己用JSON编码。stringify
你不是在发出POST请求,而是在发出GET请求
由于以下原因,JSONP无法发出POST请求
Web服务可能需要一个POST请求和错误,因为它没有得到一个POST请求和错误
你可能在那里打了一巴掌jsonp
,试图规避。只有当您向发出请求的web服务明确地支持JSONP时,JSONP才会这样做(现在不应该支持JSONP,因为我们现在有CORS(CORS提供了更多的控制,并且没有JSONP固有的安全风险)
即使您删除了jsonp
,您也在声明contentType:'application/json;charset=utf-8',
但是数据的值不是JSON。如果您将一个对象传递给数据
,则使用带有URL的jQuery对其进行编码。如果你想发送JSON,你需要自己用JSON编码。stringify
你可以使用jsonp
,但千万不要指定要使用的回调。如果您不需要jsonp
,请尝试删除该选项。@Nicolas-jQuery将动态生成URL的回调部分。您可以选择使用jsonp
,但绝不指定要使用的回调。如果您不需要jsonp
,请尝试删除该选项。@Nicolas-jQuery将动态生成URL的回调部分。我为什么要设置GET?我正在使用jsonp,因为它是一个外部url,如果我不使用它,我会得到以下信息:已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“access control Allow Origin”头。@AlexPalacios-您之所以发出get请求,是因为我在本节第二段中提到的原因这个答案。@AlexPalacios-这个答案的第四段说这可能是因为你试图绕过同一原产地政策。你不能那样做。服务器必须授予您权限。为什么我要让您获取?我正在使用jsonp,因为它是一个外部url,如果我不使用它,我会得到以下信息:已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“access control Allow Origin”头。@AlexPalacios-您之所以发出get请求,是因为我在本节第二段中提到的原因这个答案。@AlexPalacios-这个答案的第四段说这可能是因为你试图绕过同一原产地政策。你不能那样做。服务器必须授予您权限。