2017-02-28 10 views
0

Derzeit versuche ich eine Post-Anfrage an einen Server zu senden, der nur JSON-Daten akzeptiert.Wie reiche ich eine JSON-codierte Postanfrage von einem HTML-Formular ein?

Leider, wenn ich die Post-Anfrage über die Entwicklerkonsole meines Browsers inspizieren, sendet es die Daten nicht als JSON codiert, sondern als eine codierte URL, so dass die Antwort vom Typ 415 ist, aufgrund der Diskrepanz zwischen erwartetem Typ und bereitgestellte Daten.

Die Form:

<form action='http://myhost.elasticbeanstalk.com/API/Beta/Register' method = 'post' enctype='application/json'> 
Email: *<br> 
<input type='text' name='Email' style='width: 500px;' value='{"Email":"[email protected]"}'><br> 
<br> 
(Fields denoted with * are mandatory) 
<br> 
<input type='submit' value='Apply' style='float: right;'> 
</form> 

Wie Sie sehen können, habe ich in der Theorie eine Anfrage von Inhaltstyp json senden sollte, aber wenn Sie die Anfrage prüfen, die Sie sehen, gesendet wird, dass der Inhaltstyp als bleibt codierte URL, aber das Tag "enctype = 'application/json'" sollte das beheben, wenn ich mich nicht irre.
(Imgur wird derzeit nach unten, wie üblich, so dass ich dieses Bild an einen dauerhafteren Link ändern, wenn möglich)
https://puu.sh/unXtf/2610742d2f.png

Bin ich etwas fehlt?

+0

'{ "E-Mail": "[email protected]"}' sollte nur sein 'test @ gmail.com' – mehulmpt

+0

, die derzeit nicht das Problem, da das Problem ist, dass es wird nicht wie json codiert. Wenn Sie es in Raw-Text und nicht in eine Json-formatierte Zeichenfolge ändern, ist es immer noch URL-codiert, was ein Problem darstellt. Ich werde es natürlich ein bisschen ändern müssen, sobald ich dieses Problem gelöst habe, aber da der Server json erwartet und es URL-kodierte Daten empfängt, verursacht das den 415-Fehler. – Potatosaurus

Antwort

0

Browser nativ unterstützen JSON nicht als Medientyp mit HTML. Verwenden Sie XMLHttpRequest/Ajax, um Ihr Formular als JSON zu senden. Dummy Beispiel jQuery:

$.ajax({ 
      url: 'http://yoururl', 
      type: 'POST', 
      data: yourFormDataSearilized 
      contentType: 'application/json', // this is what you want 
      success: function() { 
      // check 
      } 
    }); 
+0

Leider, da dies einen einfachen Webseiten-Builder verwendet, so dass ich eine temporäre Seite haben kann, während die eigentliche Seite entwickelt wird, habe ich nicht den Luxus, so etwas verwenden zu können. In diesem Fall werde ich jedoch auf eine andere Methode zurückgreifen, die zu diesem Zeitpunkt nicht auf JSON angewiesen ist. Vielen Dank. – Potatosaurus

Verwandte Themen