将嵌套 JSON 数据发送到服务器的可能方法 - extjs 4.2.x

Posted

技术标签:

【中文标题】将嵌套 JSON 数据发送到服务器的可能方法 - extjs 4.2.x【英文标题】:Possible ways to send nested JSON data to server - extjs 4.2.x 【发布时间】:2014-05-19 14:07:48 【问题描述】:

我有 JOSN 数据如下。

我无法弄清楚以 POST 方法将此数据发送到服务器的方式是什么。

在 UI 中,假设我有一个表单,其中有一个组合框 country 和两个多选网格 ExhibitionLocation Fact Details(JSON 存储)和一个 Save 按钮。 当我点击创建按钮时,我必须以以下格式发送数据。因为我已经使用 SOAP 和其他一些 UI 技术创建了这个功能。现在我只想使用 REST JSON 和 Extjs 做同样的事情。

请建议我一些将这些数据发送到服务器的方法。


  "NewStoreReportReq":
      "countryID":"170",
      "countryName":"COLOMBIA",
       "Exhibitions":[
          
            "exhibitionID":"1004"
          ,
          
            "exhibitionID":"1007"
          
        ]
      ,
        "Locations":[
          
            "locationID":"70"
          
        ]
      ,
        "FactsDetails":[
          
            "factID":"22"
          ,
          
            "factID":"23"
          ,
          
            "factID":"24"
          
        ]

    

【问题讨论】:

到目前为止你尝试过什么?您想将其作为 Ext.Ajax.request() 执行,作为商店更新的一部分,还是其他?作为 POST 的一部分发送 JSON 数据非常简单,但我们需要知道您需要如何操作。 【参考方案1】:

//在这里你将构建你的复杂对象,从你的网格或任何其他视图中获取数据

var myComplexObject = 
        "NewStoreReportReq": 
            "countryID": "170",
            "countryName": "COLOMBIA",
            "Exhibitions": [
                
                    "exhibitionID": "1004"
                ,
                
                    "exhibitionID": "1007"
                
            ],
            "Locations": [
                
                    "locationID": "70"
                
            ],
            "FactsDetails": [
                
                    "factID": "22"
                ,
                
                    "factID": "23"
                ,
                
                    "factID": "24"
                
            ]
        
    

//在这里你将json编码你的对象

var jsonObject = Ext.encode(myComplexObject);

//这里你将向服务器执行一个 Ajax 请求 ...

Ext.Ajax.request(
    url: '../SomeServlet',
    method: 'POST',          
    params:
        'jsonObject': jsonObject
    ,
    //here you can handle the response of the server
    callback: function (opts,success,response)
         var serverResponse = Ext.decode(response.responseText);
         // the property message has to be returned in json format
         Ext.Msg.alert(serverResponse.message);
        

);

假设您使用的是 java 和一个 servlet(是的,我知道),您必须接收类似于 String json = request.getParameter("jsonObject"); 的对象,然后使用 Jackson 之类的库将该 json 转换为 Java 对象。

最好的问候。

【讨论】:

感谢您的回复。正如我有展览,网格中的位置数据。你能告诉我如何从网格中获取这些数据并创建上面的复杂数据吗? 您需要从 ExtJs 控制器监听 itemClick 事件,该事件发送记录的内容,如您在此处看到的:docs.sencha.com/extjs/4.2.2/#!/api/…

以上是关于将嵌套 JSON 数据发送到服务器的可能方法 - extjs 4.2.x的主要内容,如果未能解决你的问题,请参考以下文章

将嵌套的 Json 发送到 Symfony 表单

使用 POST 请求 iOS Swift 3 发送嵌套 JSON

嵌套 JSON 数据以发送到 API

生成的json对象,用express发送post请求到服务端,JSON.stringify后保存到服务器后数据格式变得很奇怪?

使用 Ajax POST 请求将图像和 JSON 数据发送到服务器?

C# - 将 json 格式的数据解析为嵌套的哈希表