Its been almost a year since i found something interested to write since im busy working and didn't really get the time to write some useful stuff. Today i came across a well known issue in Yii solution that caused duplicate js request whenever we are doing ajax stuff with renderPartial. Here's a small js script that will save our asses.
$.ajaxSetup({ global: true, dataFilter: function(data,type){ // only 'text' and 'html' dataType should be filtered if (type && type != "html" && type != "text") { return data; } var selector = 'script[src]'; // get loaded scripts from DOM the first time we execute. if (!$._loadedScripts) { $._loadedScripts = {}; $._dataHolder = $(document.createElement('div')); var loadedScripts = $(document).find(selector); //fetching scripts from the DOM for (var i = 0, len = loadedScripts.length; i < len; i++) { $._loadedScripts[loadedScripts[i].src] = 1; } } //$._dataHolder.html(data) does not work $._dataHolder[0].innerHTML = data; // iterate over new scripts and remove if source is already in DOM: var incomingScripts = $($._dataHolder).find(selector); for (var i = 0, len = incomingScripts.length; i < len; i++) { if ($._loadedScripts[incomingScripts[i].src] && incomingScripts[i].src.indexOf('search') == -1) { $(incomingScripts[i]).remove(); } else { $._loadedScripts[incomingScripts[i].src] = 1; } } return $._dataHolder[0].innerHTML; } });
Credit goes to Yii forum contributor! but not all scenario will work, still, its good enough at least