2017-04-06 3 views
0

Ich habe ein JSON-Array, das ich versuche, mit Ajax zu SENDGRID zu veröffentlichen. Mit Postman kann ich ohne Probleme schreiben, aber wenn ich die Daten in meine .js-Datei poste, bekomme ich immer einen Fehler (schlechte Anfrage = fehlende Parameter).POST JsonArray mit Ajax

Jede Hilfe wird geschätzt.

Hinweis: Die Werte sind tatsächlich gültig. Ich habe die identifizierenden Informationen aus Sicherheitsgründen entfernt.

CHROME PAYLOAD:

enter image description here

Ajax-Aufruf:

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'); 
    } 
}); 

Antwort

0

Das Problem scheint mit diesem Teil von JSON [{"to":[{"to email"}] zu sein. Sie können verwenden, um den JSON zu validieren. Auch JSON.stringify() Methode konvertiert einen JavaScript-Wert in eine JSON-Zeichenfolge.

Aber in Ihrem Fall postdata ist bereits eine Zeichenfolge.

+0

Ich löste mein eigenes Problem (konnte die Frage nicht schließen), aber das war verdammt nah, also werde ich dich wählen. – basic

0

Die Zeichenfolge in der Variablen gespeichert ist, eine gültige JSON. Wenn Sie JSON.stringify() auf einem JSON aufrufen, werden alle Sonderzeichen wie " nicht gefunden, und die Zeichenfolge mit Escapezeichen wird für das gewünschte Objekt nicht deserialisiert.

Während ein String ist immer noch eine gültige JSON gemäß einigen Spezifikationen Die Spezifikationen für application/json in RFC4627 angegeben

eine Objektstruktur als ein Paar von geschweiften Klammern dargestellt ist umgebenden null oder mehr Namen/Wert-Paare (oder Mitglieder).

machen Sie die zurückgegebene Zeichenfolge für Post ungültig.

Das Senden der Zeichenfolge selbst ohne erneutes Serialisieren funktioniert wahrscheinlich.

+0

Sogar das werde ich immer noch abgelehnt. – basic