2011-09-28 44 views
0

如何提取「數據」的內容並將它們加載到表單輸入中? 情況是這樣的,我有一個數據顯示,它正在從 一個數據庫表中拔出。現在在顯示的數據上,我放置了一個「編輯」鏈接。現在我的問題是, 如何使用這個json的東西,爲了讓我能夠加載數據的 點擊/要編輯的數據在輸入表單中?如何從getJson中提取數據?

$(function() { 

    //retrieve comments to display on page 
    $.getJSON("testfile.php?jsoncallback=?", function(data) { 

     //what to code here? 
    }); 
    }); 

回答

0

,如果您有簡單的字段值映射返回數據,以下從服務器即將做的伎倆爲您

$.each(data, function(key, val) { 
    $('#'+key).val(val); 
}); 

樣品數據 -

{ 
    "name": "name", 
    "address": "address" 
} 

但是如果嵌套數據正在返回,則需要遍歷對象。

0

我將輸入字段命名爲與JSON屬性相同的名稱。所以,如果我有以下對象:

{ 
    "foo": "", 
    "bar": { 
     "baz": "" 
    } 
} 

領域將被定義爲:

<input name="foo" class="jsonItem"> 
<input name="bar.baz" class="jsonItem"> 

和JSON成功處理程序將遞歸地填補他們:

$.getJSON("testfile.php?jsoncallback=?", function(data) { 
    function(root) { 
     var fillInputs = function(obj, prefix) { 
      prefix = prefix ? prefix + '.' : ''; 
      for (var prop in obj) { 
       if (obj.hasOwnProperty(prop)) { 
        var prefixOrName = prefix + prop; 
        var propVal = obj[prop]; 
        if (typeof propVal === 'object') { 
         fillInputs(propVal, prefixOrName); 
        } 
        else { 
         $('input.jsonItem[name=' + prefixOrName + ']').val(propVal); 
        } 
       } 
      } 
     }; 

     fillInputs(root, ''); 
}); 

如果你想使用這個id代替了名字,一定要在選擇器中避開點:

prefix = prefix ? prefix + '\.' : ''; 
... 
$('input.jsonItem#' + prefixOrName).val(propVal); 

另外,由於我很懶,上面的函數沒有考慮到JSON對象中的數組,但是這不應該很難添加。