[英]Post JSON Data From Javascript To Java
我需要一些絕望的幫助。 我已經待了四個小時了,我已經很累了。 :/這是我的情況:
我有一個Javascript應用程序正在向外部站點發出POST請求(使用jQuery $ .post)。 在外部站點上,我讓Apache Camel與Jetty一起運行以將其公開。 我在Camel中編寫的Web服務期望所有請求都具有JSON數據。 例如,一個請求需要一個id,因此我將其發送給{"id": 10}
。
這是我的問題:它不適用於Javascript。 我有幾種不同的工具可以為我發送帖子請求(例如瀏覽器的Poster擴展)。 如果我使用Poster並將body設置為{"id": 10}
,則效果很好。 我在服務中得到了確切的字符串。
但是,如果我從Javascript發帖,我會有所不同。 發布JSON對象將在服務端給我字符串“ id = 10”。 (在這種情況下可以,但是最終我將需要實際的JSON對象。)如果我將JSON對象字符串化,則會得到JSON字符串,只有所有字符都被轉義。 (例如“%7Bid%33 ...”)。
我發誓我嘗試了所有可能的方法來發布數據,但是我要么得到了已經解析過的怪異的JSON,要么得到了轉義的字符串(或根本沒有)。 有什么方法可以讓Javascript不解析JSON對象而只發送它(就像我的發布工具一樣)? 如果沒有,是否存在一種安全,有效的方法來轉義我得到的JSON字符串?
我非常感謝您的幫助。
我覺得我們需要更多信息,但請看一下此javascript插件。 可能是您的解決方案: https : //github.com/flowersinthesand/jquery-stringifyJSON
嘗試使用jQuery.ajax並將processData
設置為false
(默認為true
):
$.ajax({
url: '/where/to/post',
type: 'POST',
data: {"id": 10},
processData: false
});
通常,jQuery將data
任何內容轉換為查詢字符串格式,例如id=10
。 processData
標志告訴jQuery將其字面解釋為json哈希圖。
發布JSON對象將在服務端給我字符串“ id = 10”。
JavaScript不會執行此轉換,因此服務器會執行此轉換。
服務器可能根據POST的content-type
做出不同的反應,例如application/json
與text/plain
或text/html
(這是基於REST的服務的常見功能)。
這里的答案給了我一些提示,但是最終,它需要大量的調整才能正常工作。 我必須做三件事:
processData: false
。 contentType
更改為application/json
),該請求也不會觸發。 contentType to
更改contentType to
text/plain
。 這將其作為原始字符串發送。 這就是竅門。 現在,我在服務器端獲取了想要的JSON字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.