从json文件中提取数据以在Jquery中的$post中使用
我想从json文件中提取数据,将其发布到服务器端 这种数据消除的工作原理是:从json文件中提取数据以在Jquery中的$post中使用,jquery,json,post,playframework-2.0,Jquery,Json,Post,Playframework 2.0,我想从json文件中提取数据,将其发布到服务器端 这种数据消除的工作原理是: $.post('/createDBJSON',{'name':'bar'}, function(data) {window.alert(data);} 但是我需要这样的东西: $.post('/createDBJSON',{'/assets/appconf/db.json'}, function(data) {window.alert(data);} $.getJSON('/assets/appconf/db.js
$.post('/createDBJSON',{'name':'bar'},
function(data) {window.alert(data);}
但是我需要这样的东西:
$.post('/createDBJSON',{'/assets/appconf/db.json'},
function(data) {window.alert(data);}
$.getJSON('/assets/appconf/db.json', function(json) {
$.post('/createDBJSON',json,
function(data) {window.alert(data);}
});
我知道$.post以明文对象或字符串的形式获取数据,但我想以某种方式将数据发布为json文件,因为我的json文件非常复杂,太多嵌入的键值对,无法使用$.getJSON轻松解析到js变量,以便在$.post中使用
是否有另一种方法我应该考虑以实现它?
提前感谢。您可以像这样使用$.getJSON:
$.post('/createDBJSON',{'/assets/appconf/db.json'},
function(data) {window.alert(data);}
$.getJSON('/assets/appconf/db.json', function(json) {
$.post('/createDBJSON',json,
function(data) {window.alert(data);}
});
您可以像这样使用$.getJSON:
$.post('/createDBJSON',{'/assets/appconf/db.json'},
function(data) {window.alert(data);}
$.getJSON('/assets/appconf/db.json', function(json) {
$.post('/createDBJSON',json,
function(data) {window.alert(data);}
});
我认为当数据是一个对象时,您可能遇到了$.post的一个微妙问题。它被转换为字符串,但不是JSON字符串,而是用作一组键值对,用于构建应用程序/x-www-form-urlencoded字符串 $.post的另一个问题是它总是发送application/x-www-form-urlencoded的内容类型头;字符集=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包含Jackson for JSON操作,因此您只需导入正确的类,并在internet上搜索,以了解如何使用Jackson库读取JSON文件。我认为当数据是对象时,您可能遇到了$.post的一个微妙问题。它被转换为字符串,但不是JSON字符串,而是用作一组键值对,用于构建应用程序/x-www-form-urlencoded字符串 $.post的另一个问题是它总是发送application/x-www-form-urlencoded的内容类型头;字符集=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包含Jackson for JSON操作,因此您只需导入正确的类,并在internet上搜索以了解如何使用Jackson库读取JSON文件。结果表明,我的内容类型不是JSON。需要具体说明。Play 2.1 json正文解析示例如文档所示。我希望他们也能提供正确的客户呼叫示例 以下是正在工作的ajax调用:
$.getJSON('/assets/appconf/db_trial.json', function(json)
{
$.ajax({
url:'/createDBJSON',
type:"POST",
data:JSON.stringify(json),
contentType:"application/json; charset=utf-8",
dataType:"json",
success: function(){
}
});
});
事实证明,我的内容类型不是json。需要具体说明。Play 2.1 json正文解析示例如文档所示。我希望他们也能提供正确的客户呼叫示例 以下是正在工作的ajax调用:
$.getJSON('/assets/appconf/db_trial.json', function(json)
{
$.ajax({
url:'/createDBJSON',
type:"POST",
data:JSON.stringify(json),
contentType:"application/json; charset=utf-8",
dataType:"json",
success: function(){
}
});
});
这个链接可能有用,这很奇怪。您想从server db.json中提取json,然后在post请求中将其推回服务器,而不在本地将其解析为对象?似乎你应该在服务器端添加一些功能,以避免这种无用的数据传输。我认为我在做一些愚蠢的事情。我应该在服务器端使用JSON解析器,而不首先涉及客户端。我已经找到了一些关于GSON的文档来解析JSON数据。为了在Play Framework 2.1中使用它,你有这样的建议吗?这个链接可能有用,这很奇怪。您想从server db.json中提取json,然后在post请求中将其推回服务器,而不在本地将其解析为对象?似乎你应该在服务器端添加一些功能,以避免这种无用的数据传输。我认为我在做一些愚蠢的事情。我应该在服务器端使用JSON解析器,而不首先涉及客户端。我已经找到了一些关于GSON的文档来解析JSON数据。为了在PlayFramework2.1中使用它,您有这样的建议吗?它似乎在后视角下工作。你知道如何在游戏2.1中解析它吗?JsonNode json=request.body.asJson;String name=json.findPathstyle_nodes.getTextValue;在这方面似乎失败了。它似乎在后视角下工作。你知道如何在游戏2.1中解析它吗?JsonNode json=request.body.asJson;String name=json.findPathstyle_nodes.getTextValue;似乎在这方面失败了。