如何直接从json响应ajax请求获取数据

时间:2016-12-06 17:06:02

标签: javascript ajax extjs extjs5

我的应用程序有一个通过绑定或方法填充的表单form.getForm()。loadRecord()。

在这个表单中动态添加了两个我想直接从Ext.Ajax.request的响应中填充的字段。

直接从json响应ajax请求获取数据的最佳方法是什么?

Ext.Ajax.request({
  url: 'php/read',
  method: 'POST',
  params: {
    'myId': myId,
  },
  success: function (conn, response, options, eOpts) {

      var one = //get directly from request response (json) //????

  },
  failure: function (conn, response, options, eOpts) {
  }
 });

var one = //get directly from request response (json) //???
var two = ...

Ext.ComponentQuery.query('#fieldOne')[0].setValue(one);
Ext.ComponentQuery.query('#fieldTwo')[0].setValue(two);

//json 
 data:{
   one: "A",
   two: "B"
 }

EDITED

获取回复数据:

 success: function (response, options) {
     var resp = Ext.decode(response.responseText);
     //or
     var resp2 = response.responseText;
 }

我得到了resp:

 Object
   success: Object
   data: Array[1]

使用resp2我得到:

   {"success":{"success":true},"data":[{"one":"A","two":"B"}]}

应该按如下方式访问数据:

resp.one
//or
resp2.one
//or
resp.data.one

然而,它返回' undefined'。

没有什么可以得到一个'值?

1 个答案:

答案 0 :(得分:2)

一旦成功回调返回一些数据,您就需要调用一个函数。这只是一个示例,可能无法完全按照您的需要工作,但它会告诉您我的意思:

Ext.Ajax.request({
    url: 'php/read',
    method: 'POST',
    params: {
        'myId': myId,
    },
    success: function(conn, response, options, eOpts) {
        setFields(response);
    },
    failure: function(conn, response, options, eOpts) {}
});

function setFields(response) {
    Ext.ComponentQuery.query('#fieldOne')[0].setValue(response.one);
    Ext.ComponentQuery.query('#fieldTwo')[0].setValue(response.two);
}

因为您正在等待回调函数返回,所以您将无法设置变量。所以这就是上述需要发生的原因。您也可以在回调中执行此操作,但功能更清晰。