我正在尝试使用Ajax调用发出POST请求,但是我收到状态码为0的错误,因为所有请求参数都在高级REST客户端中工作。
mycode的:
<button>Post</button>
$('button').click(function(e) {
e.preventDefault();
$.ajax({
url: "https://api.sendgrid.com/v3/mail/send",
type: "POST",
contentType : 'application/json',
headers : {
'Authorization' : 'Bearer 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',
'Content-Type' : 'application/json'
},
data: JSON.stringify({
"personalizations": [{
"to": [{
"email": "test@example.com"
}]
}],
"from": {
"email": "abcd@gmail.com"
},
"subject": "Great, World!",
"content": [{
"type": "text/plain",
"value": "Cool OK!"
}]
}),
dataType: "json",
success: function (response) {
var resp = JSON.parse(response)
alert(resp.status);
},
error: function (xhr, status) {
alert("error : "+status+" :: "+JSON.stringify(xhr));
}
});
});
这是我上面的代码,在运行它的同时继续抛出错误说
{"readyState":0,"responseText":"","status":0,"statusText":"error"}
同时检查jsfiddle
请帮帮我,建议我解决一下,我无法在代码中找到问题。
答案 0 :(得分:2)
浏览器扩展不像浏览器本身那样限于跨源请求。因此,允许像Advance Advance Client或Postman这样的扩展请求跨源资源。 请参阅Chrome中的这篇文章:https://developer.chrome.com/extensions/xhr
因此,当您创建一个想要从另一个域访问资源的网站时,您必须启用CORS,就像Matt所说的那样。
答案 1 :(得分:1)
似乎可能是一个CORS问题?
如果你有兴趣了解科尔。 https://www.html5rocks.com/en/tutorials/cors/
https://sendgrid.com/docs/API_Reference/Web_API_v3/index.html 这没有说明是ajax可访问的,因此可能无法使用直接的ajax请求执行此操作。