簡體   English   中英

將JSON數據從Javascript發布到Java

[英]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/jsontext/plaintext/html (這是基於REST的服務的常見功能)。

這里的答案給了我一些提示,但是最終,它需要大量的調整才能正常工作。 我必須做三件事:

  1. 添加processData: false
  2. 將JSON對象轉換為JSON字符串。 如果我將其保留為對象(即使將contentType更改為application/json ),該請求也不會觸發。
  3. contentType to更改contentType to text/plain 這將其作為原始字符串發送。

這就是竅門。 現在,我在服務器端獲取了想要的JSON字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM