2013-08-22 22 views
1

我幾乎只想將json對象傳遞給另一個函數(例如,單擊事件被調用)。是否可以將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

這是可能的,但因爲Ajax是異步的,它可能會導致問題? – adeneo

+0

是不是因爲您希望在單擊隱藏輸入時獲取json,但不想在點擊之前調用ajax。 – Krasimir

+0

實際上,我只是想在每次單擊.some_link時調用ajax,但是我希望從那裏保存json以防止.hidden-input被單擊。當.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)以避免污染全局範圍。只需將代碼(包括'var json')用'(function(){/ * YOUR CODE HERE * /})();'','json'對於這兩個函數都可見,但不會是全局的。 –

2

使用jQuery的data方法,而不是val,存儲與元素關聯的任意數據。

相關問題