Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DataTables服务器端处理添加html内容选择标记不触发javascript_Javascript_Php_Jquery_Jquery Datatables - Fatal编程技术网

DataTables服务器端处理添加html内容选择标记不触发javascript

DataTables服务器端处理添加html内容选择标记不触发javascript,javascript,php,jquery,jquery-datatables,Javascript,Php,Jquery,Jquery Datatables,我已经成功地在我的一个表上实现了datatables服务器端处理,只是$'.select_users.changefunctionevent{在我的select选项卡上不再工作,尽管它显示正确。当我尝试从select标记中选择一个选项时,它应该对jquery函数执行操作,但它没有 2014年11月28日编辑 我发现事件和服务器端处理存在问题: 那么我如何转换脚本块1以匹配上面链接中的脚本呢 我添加了 $('#dataTables-ss').on('click', 'tr', function

我已经成功地在我的一个表上实现了datatables服务器端处理,只是$'.select_users.changefunctionevent{在我的select选项卡上不再工作,尽管它显示正确。当我尝试从select标记中选择一个选项时,它应该对jquery函数执行操作,但它没有

2014年11月28日编辑

我发现事件和服务器端处理存在问题:

那么我如何转换脚本块1以匹配上面链接中的脚本呢

我添加了

$('#dataTables-ss').on('click', 'tr', function () {
    var name = $('td', this).eq(0).text();
    alert( 'You clicked on '+name+'\'s row' );
} );
这被触发了

BLOCK 1=>Jquery-在更改select时,它应该触发此函数

$('.select_users').change(function(event){
    var selected_value = this.value;
    var id = $(this).find('option:selected').attr('class');
    var id = id.split('-');
    var select_id = id[1];
    $.ajax({
        type: 'post',
        url: 'includes/ajax.html',
        data: {
                action: 'confirm_notconfirm_subscribers',
                selected_value: selected_value,
                select_id: select_id
              },
        success: function(data) {
            $('#message').html(data).fadeIn(1000).fadeOut(1000);
        },
        error: function() {
            $("#result").html('There was an error');
        }               
    });
});
BLOCK 2=>PHP重要部分

public function read_subscriber_table() {
    $table = 'subscribers';
    $primaryKey = 'ID';
    $columns = array(
        array( 'db' => 'name', 'dt' => 1 ),
        array( 'db' => 'email', 'dt' => 2 ),
        array( // issue is here in the third array where I create the select string.
            'db' => 'confirmed', 
            'dt' => 3,
            'formatter' => function( $d, $row ) {
                if ($d == '1') {
                    $confirmed = 'Confirmed';
                } else {
                    $confirmed = 'Not Confirmed';
                }

                if ($d !== '1') { $selected = 'selected'; } else { $selected = ''; }
                $string = '<select class="select_users form-control" name="status-users">
                    <option class="opt-'.$row["ID"].'" value="1"  '.$selected.'>Confirmed</option>
                    <option class="opt-'.$row["ID"].'" value="0" '.$selected.'>Not Confirmed</option>
                </select>';
                return $string;
            }
        ),
        array( 
            'db' => 'date', 
            'dt' => 4,
            'formatter' => function( $d, $row ) {
                return date( 'd-m-Y', strtotime($d));
            }
        ),
        array( 
            'db' => 'ID', 
            'dt' => 5,
            'formatter' => function( $d, $row ) {
                return '<input type="checkbox" class="checkbox_subscribers" value="'.$d.'" >';
            }
        )
    );
    $sql_details = $this->dtss_processing();
    require( 'ssp.class.php' );
    $result = SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns );
    $start=$_REQUEST['start'] + 1;
    foreach($result['data'] as &$res){
        $res[0]=(string)$start;
        $start++;
    }
    echo json_encode($result);
}
BLOCK 4=>EDIT—在实现服务器端之前,函数看起来是这样的,并且运行良好

public function read_subscriber_table() {
    $col_names = array('ID', 'name', 'email', 'confirmed', 'date');
    $this->read_table('subscribers', $col_names);
    $i = 0;
    foreach ($this->results as $item) {
        $i++;
        if ($item->confirmed == '1') {
            $confirmed = 'Confirmed';
        } else {
            $confirmed = 'Not Confirmed';
        }
        if ($item->confirmed !== '1') { $selected = 'selected'; } else { $selected = ''; }
    ?>
        <tr id="tablerow-<?php echo $item->ID; ?>">
            <td><?php echo $i; ?></td>
            <td><?php echo $item->name; ?></td>
            <td><?php echo $item->email; ?></td>
            <td>                    
                <select class="select_users form-control" name="status-users">
                    <option class="opt-<?php echo $item->ID; ?>" value="1" <?php echo $selected ?>>Confirmed</option>
                    <option class="opt-<?php echo $item->ID; ?>" value="0" <?php echo $selected ?>>Not Confirmed</option>
                </select>
            </td>
            <td><?php echo $item->date; ?></td>
            <td><input type="checkbox" class="checkbox_subscribers" value="<?php echo $item->ID; ?>" ></td>
        </tr>
    <?php
    }
    ?>
<?php 
}

下面是评论


使用更新后的代码作为起点,将$'dataTables-ss'更改为$'dataTables-ss'。在'click','tr',函数{上更改为$'dataTables-ss'。在'change','上选择_users',functionevent{

所以您有一个动态创建的selectlist,而更改事件不会触发?@markpsmith我认为是这样的。好吧,这与PHP或datatables无关,真的吗?顺便说一下,您对datatables使用了错误的标记。因此解决方案是在创建更改事件后将其绑定到selectlist-请参阅@markpsmith仍不工作。请检查我的编辑,最后一段代码。因此,附加代码中的某些内容阻止它工作?控制台上是否有任何错误?
public function read_subscriber_table() {
    $col_names = array('ID', 'name', 'email', 'confirmed', 'date');
    $this->read_table('subscribers', $col_names);
    $i = 0;
    foreach ($this->results as $item) {
        $i++;
        if ($item->confirmed == '1') {
            $confirmed = 'Confirmed';
        } else {
            $confirmed = 'Not Confirmed';
        }
        if ($item->confirmed !== '1') { $selected = 'selected'; } else { $selected = ''; }
    ?>
        <tr id="tablerow-<?php echo $item->ID; ?>">
            <td><?php echo $i; ?></td>
            <td><?php echo $item->name; ?></td>
            <td><?php echo $item->email; ?></td>
            <td>                    
                <select class="select_users form-control" name="status-users">
                    <option class="opt-<?php echo $item->ID; ?>" value="1" <?php echo $selected ?>>Confirmed</option>
                    <option class="opt-<?php echo $item->ID; ?>" value="0" <?php echo $selected ?>>Not Confirmed</option>
                </select>
            </td>
            <td><?php echo $item->date; ?></td>
            <td><input type="checkbox" class="checkbox_subscribers" value="<?php echo $item->ID; ?>" ></td>
        </tr>
    <?php
    }
    ?>
<?php 
}