Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax调用不起作用?_Javascript_Json_Ajax - Fatal编程技术网

Javascript Ajax调用不起作用?

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

我试图使用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));
        }
    });
 });
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吗…因为在当前场景中,将站点更改为我的主机对我来说可能是一项较长的任务,请帮我解决