怀疑在php文件中包含js文件

时间:2011-04-13 16:14:40

标签: javascript html ajax

我有两个php文件,其中一个是通过url执行的,该文件调用第二个php文件进行ajax调用。一些ajax结果返回HTML内容作为结果,其中有一些javascript事件。事件没有用,所以每当进行ajax调用以返回带有JS事件的HTML内容时,我都会包含js文件。我不认为这是正确的方法。即使  我在ajax返回的html内容上使用'live'事件

但是正确的方法

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']);
}

1 个答案:

答案 0 :(得分: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
 });
});