【问题标题】:Possible ways to send nested JSON data to server - extjs 4.2.x将嵌套 JSON 数据发送到服务器的可能方法 - 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 数据非常简单,但我们需要知道您需要如何操作。

标签: json extjs extjs4.2


【解决方案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/…
猜你喜欢
  • 2016-11-27
  • 1970-01-01
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多