Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从json文件中提取数据以在Jquery中的$post中使用_Jquery_Json_Post_Playframework 2.0 - Fatal编程技术网

从json文件中提取数据以在Jquery中的$post中使用

从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

我想从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.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;似乎在这方面失败了。