var CALLBACK="/ajax/callback.php"; var data = null; // TODO: это плохо, сделать как-то красивше. var loadingBlocksCount = 0; // сколько блоков в данный момент загружаются ajax-ом? function sendEvent(source_block_id, action, data_to_send) { pageid = 13; data = data_to_send; var postData = { eventtype: "broadcast", pageid: pageid, source_block_id: source_block_id, action: action, data: data}; // передаём управление callback.php. TODO: попробовать сделать через $.get(..) и eval(); //alert("Loading event action = "+action); //$("#block_callback_result").load(CALLBACK, postData, function() { alert("Event "+action+" loaded successfully!"); } ); $("#block_callback_result").load(CALLBACK, postData); } function onEventReady(responseText, textStatus, XMLHttpRequest) { loadingBlocksCount --; if(loadingBlocksCount <= 0) { loadingBlocksCount = 0; $("#ajax_loading_indicator").hide(); } } // здесь data не используется т.к. берётся глобальная переменная. Нехорошо, но работает :-) function tellBlock(source_block_id, target_block_id, action) { var postData = { eventtype: "direct", source_block_id: source_block_id, target_block_id: target_block_id, action: action, data: data}; //var loadingData = { eventtype: "direct", action: "show_progress_indicator" }; if(loadingBlocksCount <= 0) $("#ajax_loading_indicator").show(); loadingBlocksCount ++; //alert("Telling block id#"+target_block_id+" action = "+action); $("#block_"+target_block_id).load(CALLBACK, postData, onEventReady); }