2016-12-06 157 views
0

我的應用程序有一個通過綁定或form.getForm()。loadRecord()方法填充的表單。如何直接從json響應獲取數據ajax請求

對於這種形式是動態添加兩個字段,我想直接從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 

但是,它返回 '未定義'。

什麼是缺少'一個'價值?

+1

'data'是一個數組。 'resp.data [0] .one'。 –

+0

謝謝埃文。您的解決方案解決了我的問題。 – josei

回答

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); 
} 

因爲你在等待你的回調函數返回,您將無法設置你的變量。所以這就是爲什麼上述需要發生。你也可以在回調中做到這一點,但功能更清潔。

+0

謝謝傑里米。它不工作。我試着用console.log(response.one)在sucess函數裏面返回'undefined' – josei

+0

好吧,是的。我說這是一個例子。您可能需要稍微玩一下數據。嘗試註銷'響應' –

+0

我編輯了我的文章 – josei