Javascript Ajax调用不起作用?
我试图使用Ajax调用发出POST请求,但状态代码为0时出错,因为所有请求参数都在高级REST客户端中工作 MyCode:Javascript Ajax调用不起作用?,javascript,json,ajax,Javascript,Json,Ajax,我试图使用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", content
<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));
}
});
});
Post
$(“按钮”)。单击(函数(e){
e、 预防默认值();
$.ajax({
url:“https://api.sendgrid.com/v3/mail/send",
类型:“POST”,
contentType:'应用程序/json',
标题:{
“授权”:“持票人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”,
“内容类型”:“应用程序/json”
},
数据:JSON.stringify({
“个性化”:[{
“致”:[{
“电子邮件”:test@example.com"
}]
}],
“发件人”:{
“电子邮件”:abcd@gmail.com"
},
“主题”:“伟大,世界!”,
“内容”:[{
“类型”:“文本/普通”,
“值”:“酷,好!”
}]
}),
数据类型:“json”,
成功:功能(响应){
var resp=JSON.parse(响应)
警报(各自状态);
},
错误:函数(xhr,状态){
警报(“错误:+status+:”+JSON.stringify(xhr));
}
});
});
这是我上面的代码,在运行时不断抛出错误
{“readyState”:0,“responseText”:“status”:0,“statusText”:“error”}
还要办理登机手续
请帮助我,给我建议一些解决方案,我无法在代码中找到问题。可能是CORS问题 如果你有兴趣了解cors。
这并没有说明ajax是可访问的,所以可能无法通过直接ajax请求实现这一点 浏览器扩展不像浏览器本身那样局限于跨源请求。因此,像AdvanceRESTClient或Postman这样的扩展可以请求跨源资源。 请参阅Chrome上的这篇文章:
因此,当您创建一个希望访问其他域资源的网站时,您必须启用CORS,正如Matt所说。它抛出了不允许的
405方法
请检查您正在发送的参数和服务层中的相关方法IES 405,但相同的请求参数在Prevance Rest Client中工作正常。我建议使用Fiddler查看通过Prevance Rest发送请求时的外观客户端以及使用上述代码发送时的外观。我想是关于CORS的。当您试图发布到不同的域时,浏览器会使用OPTIONS谓词发送prefly reqest,对于该请求,您将得到不允许的响应(因为服务器不支持此http谓词),这就是post无法工作的原因。我认为解决此问题的最佳方法是实现您自己的处理程序(托管在您自己的站点上)并使用该处理程序将数据发送到sendgrid。@xxxmatko谢谢,我可以在代码本身中启用CORS吗…因为在当前场景中,将站点更改为我的主机对我来说可能是一项较长的任务,请帮我解决