2009-10-05 66 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]); 
    }); 
});