2011-04-13 57 views
0

我有兩個php文件,其中一個是通過url執行的,該文件使得ajax調用第二個php文件。一些AJAX結果返回HTML內容作爲結果,其中有一些JavaScript事件。這些事件並不奏效,所以我每次調用Ajax調用JS事件返回HTML內容時都會包含js文件。我不認爲這是正確的方法。 eventhough 我使用Ajax的 '活' 事件返回的HTML內容懷疑在PHP文件中包含js文件

但什麼是正確的方式

function show_regfunc_to_box(this_id){ 
var enc_item_id = this_id; 
enc_item_id = enc_item_id.split("--")[1]; 
regfunc_to_item_id_hidden = '#regfunc_to_item_id_hidden--'+enc_item_id; 
item_id = $(regfunc_to_item_id_hidden).val(); 
var current_action_regfunc_to_id = '#current_action_regfunc_to_id--'+enc_item_id; 
if(($(current_action_regfunc_to_id).css('display'))=='none'){ 
    $.getJSON('./ajax_funcs.php?func=regfunc_to_box',{item_id_regfunc_to:item_id,enc_item_id:enc_item_id},function(data){ 
     $('.current_action_regfunc_to_and_chfunc').hide(); 
     $(current_action_regfunc_to_id).center_box(); 
     $.post('./ajax_funcs.php?func=regfunc_to_box',{enble_js_file:true}); 
     $(current_action_regfunc_to_id).html(data.regfunc_box_html); 

     //$(current_action_regfunc_to_id).center_box(); 
     $(current_action_regfunc_to_id).show(); 
    }); 

} 
//cls_i_item_options(); 

}

elseif($_REQUEST['func']=='regfunc_to_box'){ 
    require_once('./js/jq_funcs.js'); 
    ajax_fcs::regfunc_to_box($_REQUEST['item_id_regfunc_to'],$_REQUEST['enc_item_id']); 
} 
+0

向我們展示一些代碼,BC一些你寫了,可能沒有賺那麼多道理,直到我們可以撒尿你的意思 – Neal 2011-04-13 16:16:44

+0

現場甚至應該工作爲jj加載內容。如果你粘貼我們的代碼,我們可能會幫助 – 2011-04-13 16:18:02

回答

0

包括JS使用Ajax返回的HTML真的不是最好的做法。相反,在您的根文件(您的第一個文件)中包含javascript文件,並確保第二個文件只返回HTML。

從這裏開始,這只是Javascript的問題。從Ajax請求獲取的HTML所涉及的事件將不起作用,因爲瀏覽器不知道有任何事件附加到該DOM部分。因此,要完成這項工作,請重新綁定Javascript回調函數中的所有事件(即在Ajax請求完成時執行的函數)。

一個例子,如果你正在使用jQuery:

$.get('second_page.php', function(data){ 
// that is callback function, let's say 
// you are getting a div with id="test" 
// as returned HTML 
$('body').append($(data)); 

$('#test').bind('some_event', function(e){ 
    // and that is event callback 
}); 
}); 
+0

感謝很多人。有效。謝謝 – 2011-04-13 17:09:37