2017-02-28 178 views
0

目前我試圖發送一個發佈請求到我有一個服務器,它被配置爲只接受JSON數據。如何從HTML表單提交JSON編碼的發佈請求?

不幸的是,當我通過瀏覽器的開發者控制檯檢查發佈的請求時,它發送的數據不是編碼爲JSON,而是作爲編碼的url,因此響應類型爲415,這是由於預期類型和提供的數據。

形式:

<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> 

正如你所看到的,我在理論上應發送內容類型的JSON的請求,但是如果您檢查被髮送的請求時,你看到的內容類型仍然是一個編碼的url,但標籤「enctype ='application/json'」應該解決這個問題,除非我錯了。
(imgur目前下跌了,像往常一樣,所以我將這個形象換一個更永久鏈接時可能)
https://puu.sh/unXtf/2610742d2f.png

我缺少的東西?

+0

'{「電子郵件」:「[email protected]」}'應該僅僅是'@測試gmail.com' – mehulmpt

+0

這不是問題,目前,因爲這個問題是它不會被編碼爲json。如果您將其更改爲原始文本而不是json格式的字符串,則仍然是url編碼,這是一個問題。一旦解決了這個問題,我顯然需要稍微改變它,但由於服務器期待json並且它正在接收url編碼數據,所以這是導致415錯誤的原因。 – Potatosaurus

回答

0

瀏覽器本身不支持使用HTML作爲媒體類型的JSON。使用XMLHttpRequest/Ajax將表單提交爲JSON。使用jQuery假例如:

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

不幸的是,由於這是使用基本的網頁構建器,所以我可以在實際網站開發時擁有一個臨時頁面,但我沒有能夠使用類似的東西的奢侈品。但是,在這種情況下,我將採用另一種不依賴於JSON的方法。謝謝。 – Potatosaurus