$.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,因此您只需要导入正确的类,并在 Internet 上搜索以了解如何使用 Jackson 库读取 JSON 文件。