2017-04-06 14 views
0

私は、Ajaxを使用してSENDGRIDに投稿しようとしているJSON配列を持っています。郵便配達員を使用して私は何も問題なく投稿することができます。しかし、私は自分の.jsファイルにデータを投稿するときにエラーが発生し続けます(悪いリクエスト=パラメータがありません)。POST JsonArray with Ajax

何か助けていただければ幸いです。

注:値は実際に有効です。私は安全のための識別情報を削除しました。

CHROMEペイロード:

enter image description here

AJAXコール:

var mailUrl = "https://api.sendgrid.com/v3/mail/send"; 
var postdata = '{"personalizations": [{"to":[{"to email"}],"from": {"email":"from email"},"subject":"Hello, World!" , "content" : [{ "type":"text/plain" , "value":"TestMessage!" }]}]}' 
$.ajax({ 
    type: 'POST', 
    headers: {Authorization: "Bearer APIKEY"}, 
    url: mailUrl, 
    contentType: "application/json", 
    data: JSON.stringify(postdata), 
    success: function (res) { 
     alert('ok'); 
    }, 
    error: function (res) { 
     alert('problems'); 
    } 
}); 

答えて

0

この問題はjson [{"to":[{"to email"}]のこの部分にあるようです。jsonlintを使用してjsonを検証できます。またJSON.stringify()メソッドは、JavaScript値をJSON文字列に変換します。

あなたの場合、postdataはすでに文字列です。

+0

私は自分の問題を解決しましたが(質問を閉じることができませんでした)、これはかなり気が遠かったので、私はあなたを選びます。 – basic

0

変数に格納されている文字列が有効なJSONです。 JSONのJSON.stringify()を呼び出すと、"のようなすべての特殊文字がエスケープされ、そのエスケープされた文字列は、目的のオブジェクトにデシリアライズされません。

文字列がオブジェクト構造はゼロ以上の名前/値のペアを囲む中括弧 のペアとして表される

一部の仕様によれば、application/jsonの仕様はRFC4627に記載された有効なJSONがまだある間(またはメンバー)。

投稿のために返された文字列を無効にします。

もう一度シリアル化せずに文字列自体を送信することはおそらく有効です。

+0

それでも私はまだ拒否されています。 – basic