如何直接从json响应ajax请求获取数据
How to get data directly from json response ajax request
我的应用程序有一个通过绑定或 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"
}
已编辑
获取响应数据:
success: function (response, options) {
var resp = Ext.decode(response.responseText);
//or
var resp2 = response.responseText;
}
我得到:
Object
success: Object
data: Array[1]
使用 resp2 我得到:
{"success":{"success":true},"data":[{"one":"A","two":"B"}]}
本应按如下方式访问数据:
resp.one
//or
resp2.one
//or
resp.data.one
然而,returns 'undefined'.
缺少什么才能获得 'one' 价值?
您需要在成功回调 return 一些数据后调用一个函数。这纯粹是示例,可能无法完全按照您的需要工作,但它会告诉您我的意思:
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);
}
因为您正在等待 return 的回调函数,您将无法设置变量。所以这就是为什么需要发生上述情况。您也可以在回调中执行此操作,但函数更清晰。
我的应用程序有一个通过绑定或 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"
}
已编辑
获取响应数据:
success: function (response, options) {
var resp = Ext.decode(response.responseText);
//or
var resp2 = response.responseText;
}
我得到:
Object
success: Object
data: Array[1]
使用 resp2 我得到:
{"success":{"success":true},"data":[{"one":"A","two":"B"}]}
本应按如下方式访问数据:
resp.one
//or
resp2.one
//or
resp.data.one
然而,returns 'undefined'.
缺少什么才能获得 'one' 价值?
您需要在成功回调 return 一些数据后调用一个函数。这纯粹是示例,可能无法完全按照您的需要工作,但它会告诉您我的意思:
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);
}
因为您正在等待 return 的回调函数,您将无法设置变量。所以这就是为什么需要发生上述情况。您也可以在回调中执行此操作,但函数更清晰。