2009-10-05 6 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> 

그리고 나는 위의 양식을 작성할지, JQuery와 통해, 아약스 기능을 가지고있다. 값뿐 아니라 읽기 전용인지, 입력 클래스인지, 사용 불가능인지 여부도 결정합니다.

그래서 서버가 같은 것을 보일 것입니다 JSON 형식으로 아약스 기능이 모두를 반환하는 것입니다 :

{"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

+0

예, $ ('# input1'). attr ('value', 123) 설정은 입력란의 값을 설정합니다. – Matt

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 (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]); 
    }); 
}); 
관련 문제