$.post()
データがオブジェクトの場合、微妙な問題が発生する可能性があると思います。文字列に変換されますが、JSON 文字列には変換されません。むしろ、文字列を作成するためのキーと値のペアのセットとして使用されapplication/x-www-form-urlencoded
ます。
のもう 1 つの問題$.post()
は、常に の content-type ヘッダーを送信することです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 ファイルを読み取る方法を学習するだけです。