2013-02-12 4 views
2

JSON 문자열을 반환하는 .post 양식을 만들었고 선택 상자의 이름을 기반으로 데이터를 가져와야합니다. 다음 예제를 참조하십시오.변수 이름을 통해 JSON을 검색하는 개체

자바 스크립트

$(document).ready(function(){ 
    $.post('/seller/product_upload/helpers/jpost_product_form_autofill.php',{product_id:$("input[name='product_id']").val()},function(data){ 
     alert(data); 
     if(data!='false'){ 
      var obj = jQuery.parseJSON(data); 
      $("#attributes_table select").each(function(){ 
       var select=$(this); 
       select.find("option").each(function(){ 
        var option=$(this); 
        var select_name=select.attr('name'); 
        alert(select_name); 
        alert(obj.select_name); 
        if(option.val()==obj.select_name){ 
         option.attr('selected','selected'); 
        } 
       }); 
      }); 
     } 
    }); 
});  

여기에 문제의 주요 부분은 실제로 바닥 if 부분입니다. obj.select_name은 여기에서 주요 개체 이름이 아닙니다. 실제로는 selectbox의 이름이고 JSON에서 구문 분석 한 배열 키 값과 일치하게 만들었습니다.

그러나 시스템에서는 obj.select_name에 대해 경고를 계속 정의하지 않습니다. JSON 객체로 구문 분석하기 전에 먼저 select_name을 문자열로 구문 분석 할 수있는 방법이 있습니까?

+0

"json 개체"와 같은 것은 없습니다. json 문자열이 있습니다.이 문자열은 기본 데이터 구조로 디코딩 할 수 있습니다. 정의되지 않은 오류가 발생하면 디코드 된 데이터 구조를 콘솔에 기록하고 실제로 거기에있는 내용을 확인하십시오. –

답변

2

난 당신이 그렇게하고 싶은 생각 :

언급 한 바와 같이
var name = 'select_name'; 
alert(obj[name]); 
+0

안녕하세요. 모든 도움에 감사드립니다. 위의 대답은 작동합니다!. 감사! – Lawrence

0

, 당신은 인덱스로 알 수없는 문자열을 사용하는 대괄호를 사용해야합니다. 즉, 코드를 단순화하기 위해 jQuery의 val 함수를 사용할 수 있습니다. 수동으로 옵션 값을 설정할 필요가 없으므로 val은 옵션 값을 읽을 수있는 것처럼 설정할 수 있습니다. 이 LKE : val가 자동으로 내부 forEach을 할 것이기 때문에

var obj = jQuery.parseJSON(data); 
$("#attributes_table select").each(function(){ 
    var select = $(this); 
    select.val(obj[select.attr('name')]); 
}); 

는 또한,이 작업을 수행 할 수 있습니다.

관련 문제