Prototype のライブラリを使用して、AJAX に基づく CMS システムを作成しようとしています。ページの読み込み時に、JSON 経由で返されたページの HTML、ページ タイトル、および追加の Javascript を取得し、メイン領域の HTML を更新します。また、特定の ID がクリックされるのをリッスンするイベント リスナーもあります。
リスナーが働いている、
var TabMenu = {
selectedTab: 'main',
showTab: function(pid) { alert(pid); alert($(pid));
$(pid).addClassName('selected'); this.selectedTab = pid;
$(this.defaultTab).removeClassName('selected');
}};
読み込み後、新しいタブの 1 つをクリックすると、最初の「テスト」アラートは要素の ID を正常にアラートしますが、2 番目のアラート ($(pid)) は null を返します。AJAX リクエストによって返された HTML が評価されておらず、DOM に追加されていないと推測することしかできません。
関連する AJAX 呼び出しは次のとおりです。
new Ajax.Request(url, {
onSuccess: function(t) {
data = t.responseText.evalJSON();
Page.update(data.html, data.title, data.js);
Page.destroyLoader();
}
});
そして、ここに更新機能があります:
update: function(data, title, js) {
document.title = Global.title + title;
if (title != "") { $('HEADING').update(title); }
$('MAIN').update(data);
if (js != "") {
var nuJS = new Element('script', { type: 'text/javascript' }).update(js);
$('MAIN').insert({ top: nuJS });
}
}
これを機能させる方法についてのアイデアはありますか?