Javascript 如何直接从json响应ajax请求获取数据
我的应用程序有一个通过绑定或方法form.getForm().loadRecord()填充的表单 在这个表单中动态添加了两个字段,我想直接从Ext.Ajax.request的响应中填充这两个字段 直接从json响应ajax请求获取数据的最佳方式是什么Javascript 如何直接从json响应ajax请求获取数据,javascript,ajax,extjs,extjs5,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, respon
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);
已编辑
要获取响应数据,请执行以下操作:
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”
获取“一”值缺少什么?一旦成功回调返回一些数据,您需要调用函数。这纯粹是一个示例,可能无法完全按照您的需要工作,但它将向您展示我的意思:
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);
}
因为您正在等待回调函数返回,所以无法设置变量。因此,这就是为什么需要进行上述操作。您也可以在回调中执行此操作,但函数更干净。一旦成功回调返回一些数据,您需要调用函数。这纯粹是一个示例,可能无法完全按照您的需要工作,但它将向您展示我的意思:
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);
}
因为您正在等待回调函数返回,所以无法设置变量。因此,这就是为什么需要进行上述操作。您也可以在回调中执行,但函数更简洁。谢谢Jeremy。它不起作用。我尝试在suces函数中使用console.log(response.one)进行测试,该函数返回“undefined”。我说这是一个例子。您可能需要稍微处理一下数据。尝试注销
response
谢谢Jeremy。它不起作用。我尝试在suces函数中使用console.log(response.one)进行测试,该函数返回“undefined”。我说这是一个例子。您可能需要稍微处理一下数据。尝试注销响应
数据
是一个数组<代码>响应数据[0]。一个。谢谢Evan。您的解决方案解决了我的问题。数据
是一个数组<代码>响应数据[0]。一个。谢谢Evan。你的解决方案解决了我的问题。