2009-10-05 29 views
1

我確定我只是錯過了一些東西,但如果有人知道如何在不調用jquery插件的情況下做到這一點,這將會非常有幫助。如何通過jQuery將json響應連接到html表單?

讓我們假設我有一個簡單的HTML表單類似如下:

<form id="mainform" action="form.php" method="post"> 
    <fieldset> 
    <legend>Main Form</legend> 
     <label for="input1">First Input</label> 
     <input id="input1" name="input1" type="text" /> 
     <label for="input2">First Input</label> 
     <input id="input2" name="input2" type="text" /> 
    </fieldset> 
</form> 

而且我有一個AJAX功能,通過jQuery,我要填寫上述表格。不僅僅是這些值,還包括它是否是隻讀的,輸入的類別以及它是否被禁用。

因此,服務器將所有這一切都返回JSON格式的AJAX功能,這應該是這個樣子:

{"input1":{"value":10},"input2":{"value":100,"readonly":"readonly","class":"noinput"}} 

有有jQuery的經歷每個頂級對象的簡單方法,將它綁定到具有相應ID的DOM元素,然後將所有子對象設置爲該ID的屬性?

對不起,如果這是一件容易的事。我沒有找到在主要的jquery頁面中處理json的正確方法。

回答

2
for(var element in json){ 
    for(var attribute in json[element]){ 
     $('#' + element).attr(attribute, json[element][attribute]); 
    } 
} 
+0

我覺得這個不錯。謝謝!設置「value」屬性和設置'element.val()'一樣好,對嗎? – Anthony 2009-10-05 14:14:46

+0

是的,設置$('#input1')。attr('value',123)將設置該字段的值。 – Matt 2009-10-05 14:19:30

1

你不需要任何插件:

$.post("/page/", 
    "", 
    function(json){ 
     try{ 

     //relevant part 
     for(element in json){ 
      $(element).val(json[element]); 
     } 
     //end of relevant part 

     }catch(e){alert(e.description);} 
    }, "json"); 

Matt's answer是正確的,我看錯json響應。這是一個更簡單的處理程序,因爲它只考慮元素的文本值。

0

這個怎麼樣?

jQuery.each(jsonObject, function(input_idx, input_val) 
{ 
    var input = $('#' + input_idx); 
    jQuery.each(input_val, function(attr_idx, attr_val) 
    { 
     input.attr(attr_idx, attr_val); 
    }); 
}); 

或者,你可以使用簡單的for循環:

for (var input_idx in jsonObject) 
{ 
    var input_val = jsonObject[input_idx]; 
    var input = $('#' + input_idx); 
    for (var attr_idx in input_val) 
    { 
     input.attr(attr_idx, input_val[attr_idx]); 
    }); 
}); 
相關問題