2016-12-01 21 views
1

私はAjax呼び出しを使用してPOSTリクエストを作成しようとしていますが、すべてのリクエストパラメータがAdvanced REST Clientで動作している状態コード0でエラーが発生しています。Javascript Ajaxコールが機能しません。

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": "[email protected]" 
       }] 
       }], 
       "from": { 
       "email": "[email protected]" 
       }, 
       "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

「405メソッドが許可されていません」送信するパラメータとサービスレイヤの関連メソッドを確認してください。 – brk

+0

はい405しかし、同じリクエストパラメータがAdvance Rest Clientでうまく機能しています。 –

+1

Fiddler to Advance Rest Clientを介して送信されたリクエストの様子と、上記のコードを使用してリクエストを送信したときの様子を確認してください。私はそれがCORSについてだと思う。別のドメインに投稿しようとすると、ブラウザはOPTIONS動詞を使用してprefly reqestを送信します。そのリクエストでは、(サーバーがこのhttp動詞をサポートしていないため)応答がNOT ALLOWEDになります。作業。 – xxxmatko

答えて

2

ブラウザ拡張機能は、ブラウザ自体としてのクロスオリジン要求に限定されていません。したがって、Advance Rest ClientやPostmanのような拡張機能はCross Origin Resourcesを要求することができます。 Chromeからこの記事を参照してください:https://developer.chrome.com/extensions/xhr

他のドメインのリソースにアクセスするウェブサイトを作成する場合は、Mattが言っていたとおりにCORSを有効にする必要があります。

関連する問題