首页 > 解决方案 > 当我在 ajax 上同时使用 POST 进行下拉显示数据时,GET 功能不起作用

问题描述

所以我尝试使用 ajax 显示数据并按值过滤它...当我只显示所有数据但我想让显示数据按下拉值过滤时它就起作用了,它需要发布以获取下拉选择的值

然后,当我完成后,我可以让 POST 函数在控制台上运行,我得到的响应根本没有问题,但是查看数据的 get 函数不起作用,所以数据不会加载......

prepro.php 用于下拉功能(似乎完全没有问题)

<select id="data_latih">
<option value="" selected="selected">Pilih Dokumen keberapa</option>
<?php
$sql = "SELECT DISTINCT dokumen FROM dt_latih ";
$resultset = mysqli_query($connection, $sql) or die("database error:". mysqli_error($connection));
while( $rows = mysqli_fetch_assoc($resultset) ) {
?>
<option value="<?php echo $rows["dokumen"]; ?>"><?php echo $rows["dokumen"]; ?></option>
<?php } ?>
</select>

prepro.php 关于 ajax 函数

function viewData(){
        $.ajax({
            url: 'proseslabel.php?p=view',
            method: 'GET'
        }).done(function(data){
            $('tbody').html(data)
            tableData()
        })
    }
    function tableData(){
        $('#tabledit').Tabledit({
            url: 'proseslabel.php',
            eventType: 'dblclick',
            editButton: true,            
            deleteButton: false,
            hideIdentifier: false,
            buttons: {
                edit: {
                    class: 'btn btn-sm btn-warning',
                    html: '<span class="glyphicon glyphicon-pencil"></span> Edit',
                    action: 'edit'
                },
                save: {
                    class: 'btn btn-sm btn-success',
                    html: 'Save'
                }
            },
            columns: {
                identifier: [0, 'id_latih'],
                editable: [[16, 'label', '{"1": "1", "2": "2", "3": "3", "4": "4", "5": "5", "6": "6"}']]
            },
            onSuccess: function(data, textStatus, jqXHR) {
                viewData()
            },
            onFail: function(jqXHR, textStatus, errorThrown) {
                console.log('onFail(jqXHR, textStatus, errorThrown)');
                console.log(jqXHR);
                console.log(textStatus);
                console.log(errorThrown);
            },
            onAjax: function(action, serialize) {
                console.log('onAjax(action, serialize)');
                console.log(action);
                console.log(serialize);
            }
        });
    }
          $("#data_latih").change(function() {
          var id = $(this).find(":selected").val();
          $.ajax({
          url: 'proseslabel.php?p=view',
          method:"POST",
          data: {id:id},
          dataType: "json",
          cache: false,
          success: function(data) {
            console.log(data);
            $('tbody').html(data);
             viewData;
            tableData();
          }
          });
        });


</script>

proseslabel.php 用于显示数据

$page = isset($_GET['p'])? $_GET['p'] : '' ;
if($page=='view'){
    if(isset($_POST["id"]))
{
    $result = $mysqli->query("SELECT * FROM dt_latih ");
    while($row = $result->fetch_assoc()){
        ?>
        <tr>
            <td><?php echo $row['id_latih'] ?></td>
            <td><?php echo $row['kalimat'] ?></td>
            <td><?php echo $row['x1'] ?></td>
            <td><?php echo $row['x2'] ?></td>
            <td><?php echo $row['x3'] ?></td>
            <td><?php echo $row['x4'] ?></td>
            <td><?php echo $row['x5'] ?></td>
            <td><?php echo $row['x6'] ?></td>
            <td><?php echo $row['x7'] ?></td>
            <td><?php echo $row['x8'] ?></td>
            <td><?php echo $row['x9'] ?></td>
            <td><?php echo $row['x10'] ?></td>
            <td><?php echo $row['x11'] ?></td>
            <td><?php echo $row['x12'] ?></td>
            <td><?php echo $row['x13'] ?></td>
            <td><?php echo $row['x14'] ?></td>
            <td><?php echo $row['label'] ?></td>
        </tr>
        <?php
    }
    }
} else{

    // Basic example of PHP script to handle with jQuery-Tabledit plug-in.
    // Note that is just an example. Should take precautions such as filtering the input data.

    header('Content-Type: application/json');

    $input = filter_input_array(INPUT_POST);



    if ($input['action'] == 'edit') {
        $mysqli->query("UPDATE dt_latih SET label='" . $input['label'] . "' WHERE id_latih='" . $input['id_latih'] . "'");
    } else if ($input['action'] == 'delete') {
        $mysqli->query("UPDATE tabledit SET deleted=1 WHERE id_latih='" . $input['id_latih'] . "'");
    } else if ($input['action'] == 'restore') {
        $mysqli->query("UPDATE tabledit SET deleted=0 WHERE id_latih='" . $input['id_latih'] . "'");
    }

    mysqli_close($mysqli);

    echo json_encode($input);

}

数据只是不会加载,但在控制台检查元素中,我得到了我想要回显的所有值

标签: phpjqueryajaxdropdown

解决方案


在您的viewData()函数中,您应该在 AJAX 调用的 data 选项中而不是在 url 中定义参数。像这样:

function viewData(){
    $.ajax({
        url: 'proseslabel.php',
        method: 'GET',
        data: {p:'view'}
    }).done(function(data){
        $('tbody').html(data);
        tableData();
    })
}

推荐阅读