我想你可能會擊中$.post()
一個微妙的問題,當該數據是一個對象。它被轉換爲字符串,但不轉換爲JSON字符串 - 相反,它被用作構建application/x-www-form-urlencoded
字符串的一組鍵值對。
$.post()
的另一個問題是它總是發送application/x-www-form-urlencoded; charset=UTF-8
的內容類型標題。這可能是服務器崩潰的原因:它期望JSON,但內容類型爲application/x-www-form-urlencoded
。要解決這個問題,我們可以使用更多選項的更一般的$.ajax()
。
試試這個:
$.getJSON('/assets/appconf/db_trial.json', function(firstData)
{
$.ajax({
type: "POST",
url: '/createDBJSON',
data: JSON.stringify(firstData), // send JSON representation
contentType: 'application/json; charset=utf-8', // set correct content-type header
success: function(secondData) {window.alert(secondData);}
});
});
我們也可以嘗試從未困擾到第一JSON響應轉換成一個對象,然後回一個JSON字符串的另一種方法,而不是僅僅把它作爲文本的全部時間:
$.ajax({
dataType: "text", // parse response only as text
url: '/assets/appconf/db_trial.json',
success: function(jsonString) {
$.ajax({
type: "POST",
url: '/createDBJSON',
data: jsonString, // jsonString is already a json string
contentType: 'application/json; charset=utf-8', // set correct content-type header
success: function(secondData) {window.alert(secondData);}
});
}
});
請同時試用!
但我仍然建議修復您的後端,以免數據無法通過客戶端!我認爲Play Framework 2包含用於JSON操作的Jackson,因此您只需導入正確的類並搜索互聯網即可瞭解如何使用Jackson庫讀取JSON文件。
此鏈接可能有用http://stackoverflow.com/questions/2177548/load- json-into-variable – 2013-03-23 15:17:30
這很奇怪。你想從服務器('db.json')中取出json,然後在'post'請求中將它推回到服務器,甚至沒有將它解析到本地對象中?看起來你應該在服務器端添加一些功能,以避免這種無用的數據傳輸。 – tcovo 2013-03-23 15:33:06
我覺得我在做一些愚蠢的事情。我應該在服務器端使用JSON解析器,而不涉及客戶端。我找到了一些關於GSON解析JSON數據的文檔。你有這樣的建議,以便在Play Framework 2.1中使用它嗎? – Hako 2013-03-23 15:36:41