2013-08-22 1 views
1

json 객체를 다른 함수로 넘겨주고 싶을 때 (예 : click 이벤트가 호출되는 경우).HTML id를 json 객체로 설정하여 다른 함수로 전달할 수 있습니까?

$(document).on('click', '.some_link', function() { 
var something = "something"; 

    $.get('/someDirectory/someScript.php', { 
     'some_var': something 
    }}.done(function(data) { 
     var json = jQuery.parseJSON(data); 
     $('#json-item-container').val(json); 
    }); 
}); 

$('.hidden-input').click(function() { 
    var json = $('#json-item-container').val(); 
    //Do something with json 
}); 
+0

아약스가 비동기이기 때문에 문제가 발생할 수 있습니까? – adeneo

+0

숨겨진 입력을 클릭 할 때 json을 얻고 싶지만 클릭하기 전에 아약스를 호출하지 않으려 고합니다. – Krasimir

+0

사실, .some_link를 클릭 할 때마다 아약스를 호출하기를 원하지만 .hidden 입력을 클릭하면 json을 거기에서 저장하려고합니다. .hidden-input을 클릭하면 json 객체가 필요합니다. .some_link는 모달을 거의 여는 반면, .hidden-input은 모달 안에서 클릭 가능한 필드입니다. – dtgee

답변

1

스토어 json으로 전역 범위의 데이터 :

var json; // json var defined in global scope 

$(document).on('click', '.some_link', function() { 
var something = "something"; 

    $.get('/someDirectory/someScript.php', { 
     'some_var': something 
    }}.done(function(data) { 
     json = data; 
    }); 
}); 

$('.hidden-input').click(function() { 
    console.log('Ohai! Im the json object: ' + JSON.stringify(json)); 
}); 
+0

기본적으로 JSON을 찾으면 get은 결과를 구문 분석한다고 생각합니다. – jcubic

+0

@jcubic 편집 해 주셔서 감사합니다. – AustinAllover

+1

글로벌 범위의 오염을 피하려면 익명 범위 지정 기능 (http://stackoverflow.com/a/5786899/664577 참조)을 사용하십시오. '(function() {/ * YOUR CODE HERE * /})(); '로'('var json'을 포함하여) 코드를 감싸기 만하면,'json'은 두 함수에서 볼 수 있지만 전역이 아닙니다. –

2

사용 jQuery의 data 방법 대신 val는 요소와 관련된 임의의 데이터를 저장합니다.

관련 문제