Ajax只能使用一次Codeigniter

时间:2012-02-09 20:39:23

标签: jquery ajax json codeigniter

我有JS:

jQuery('.unblock').click(function(){
        var num = jQuery('.page.active').text();
        var ban_id = jQuery('.unblock').attr('id');

        jQuery.post('http://127.0.0.1/auth_system_1/user_activity/delete_user_ban', { ban_id : ban_id, num : num }, function(data) {

                if (data.status == 'ok')
                {
                    //jQuery('.comment-box').remove();
                    jQuery('#ban_list').append(data.html);
                }
                else
                {
                    alert('error');
                }

        }, 'json');
    });  

我的控制器:

function delete_user_ban()
{
    $user_id = $this->session->userdata('user_id');

    $ban_id = $this->input->post('ban_id');

    $current_page = (int)$this->input->post('num');

    $current_page = ($current_page-1)*2;

    //$this->activity_model->delete_user_ban($ban_id);

    $per_page = 2;

    $data['ban_list'] = $this->user_activity_lib->user_ban_list($user_id, $current_page, $per_page);

    $data['test'] = rand(1,100);

    $html = $this->load->view('front_end/ajax_delete_ban', $data, true);

    unset($data);
    unset($user_id);
    unset($ban_id);

    echo json_encode(array(
                            'status' => 'ok',
                            'html' => $html,
                            'start_page' => $current_page));

}

$data['test'] = rand(1,100); is for test! I make random number and send it to view.

我的问题是我在页面上有一些块,当我按下“unban”按钮记录删除数据库并使用json我返回加载的行(每页2项)当我尝试单击块上的相同按钮时来自json它不起作用?!为什么?

如果我按下来自json的物品,我的ajax不会拨打第二个电话吗?

来自json的视图与我在页面加载时加载的视图相同。

1 个答案:

答案 0 :(得分:6)

关键是jQuery的on()方法。

<强> .on() - jQuery API

为什么?加载DOM后添加到网页的HTML元素不会“看到”由例如.click().hover(),依此类推。

jQuery('.unblock').on('click', function(){
    var num = jQuery('.page.active').text();
    var ban_id = jQuery('.unblock').attr('id');

    jQuery.post('http://127.0.0.1/auth_system_1/user_activity/delete_user_ban', { ban_id : ban_id, num : num }, function(data) {

            if (data.status == 'ok')
            {
                //jQuery('.comment-box').remove();
                jQuery('#ban_list').append(data.html);
            }
            else
            {
                alert('error');
            }

    }, 'json');
});

注意: jQuery的on()方法是在jQuery 1.7中引入的。如果您使用旧版本的jQuery,请使用live()方法。

<强> .live() - jQuery API