Javascript Ajax调用不起作用?

时间:2016-12-01 06:21:58

标签: 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",
        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

请帮帮我,建议我解决一下,我无法在代码中找到问题。

2 个答案:

答案 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请求执行此操作。