作業中のコードに問題があります。ajaxContent
いくつかのポイントから使用される汎用関数 ( ) があります。これに必要なのは、AJAX 呼び出しが行われた後に関数を実行することですが、呼び出しを行う前に持っているデータを渡す必要があります (したがって、AJAX 呼び出しから返されるデータではありません)。
function ajaxContent(url, id, target, data, callbackFunction) {
$.ajax({
async : true,
....
complete: function(){
if(typeof callbackFunction == "function"){
callbackFunction(); // function get's executed here, lead_id is not available
}
}
});
}
$(document).on("click", "#something", function(){
var leaf_id = $(this).attr('rel');
ajaxContent(url, id, target, data, function(leaf_id){
url = "/path/" + leaf_id;
window.location = url;
})
})
$(document).on("click", "#action", function() {
ajaxContent(url, id, target, data, function(){
if ($(this).attr('rel') == "M_0") // $(this).attr('rel') not available here, so need to pass through some way
$('#treedata').css('background', 'url(/img/rotonde.png) 50% 50% no-repeat');
});
});
私はおそらく次のようなものを使うことができます
function ajaxContent(url, id, target, data, callbackFunction, varA, varB, varC, varD) {
callbackFunction(varA, varB, varC, varD);
}
と
ajaxContent(url, id, target, data, function(varA){
}, varA, varB, varC, varD)`
しかし、実際にはスケーラブルではありません。
これが明確であることを願っています:-)