无法通过AJAX检索发布的变量

时间:2019-08-31 12:08:51

标签: php ajax post

我正在尝试使用Ajax将可变的“ id”发布到另一个php页面。

在名为“ export.php”的第二个php页面中,我需要使用此变量来查询MySql表并将结果显示在html表中。

但是它似乎不起作用,似乎在export.php上未设置变量。 你能帮我吗?

<script>
$('#btn_report').click(function(){
    if(confirm("Are you sure?"))  {
    var id = [];
        $(':checkbox:checked').each(function(i){
    id[i] = $(this).val();
    alert (id[i]); //this is correctly printed
       });
        if(id.length === 0)    {
       alert("No record selected");
            }
    else   {                        
       $.ajax({                      
        url:'export.php',
        type:'POST',
        data:{id:id},                                               
        });

          }
    }
    else  {
    return false;
    }
});
</script>

export.php

所以问题是“ if(isset ...”返回false,并在此代码的底部显示else警报。

<html lang="en">
  <head>
    <title>Export</title>
  </head>
  <body>
<?php

$connect = mysqli_connect('localhost', 'user', 'pass', 'db' );

    if(isset($_POST["id"])){
        echo 'break1';
        foreach($_POST["id"] as $id) {

            $sel = "SELECT * FROM `user_details` WHERE `Codice prodotto` = $id";
            echo $sel . "<br>";
             $res = mysqli_query($connect, $sel);
                        echo "<table border='1'>
                            <tr>
                        <th></th>
                        <th>Codice prodotto</th>
                        <th>Relazione tecnica</th>
                        <th>Modello offerto</th>
                        <th>Descrizione</th>
                        <th>Immagine</th>
                        <th>Tipologia di Ancoraggio</th>
                        <th>Design</th>
                        <th>Illuminazione</th>
                        <th>FSP</th>
                        <th>DATI TECNICI</th>
                        <th>Dissolvenza delle ombre</th>
                        </tr>";

                        while($row = mysqli_fetch_array($res))
                        {
                        echo '<tr id="' . $row['Codice prodotto'] . '">';
                        echo '<td><input type="checkbox" name="codice[]" class="delete_prodotto" value="' . $row['Codice prodotto'] . '"></td>';
                        echo "<td>" . $row['Codice prodotto'] . "</td>";
                        echo "<td>" . $row['Relazione tecnica'] . "</td>";
                        echo "<td>" . $row['Modello offerto'] . "</td>";
                        echo "<td>" . $row['Descrizione'] . "</td>";
                        echo "<td>" . $row['Immagine'] . "</td>";
                        echo "<td>" . $row['Tipologia di Ancoraggio'] . "</td>";
                        echo "<td>" . $row['Design'] . "</td>";
                        echo "<td>" . $row['Illuminazione'] . "</td>";
                        echo "<td>" . $row['FSP'] . "</td>";
                        echo "<td>" . $row['DATI TECNICI'] . "</td>";
                        echo "<td>" . $row['Dissolvenza delle ombre'] . "</td>";
                        echo "</tr>";
                        }
                        echo "</table>"; 
            }

     }
    else {
        echo "no value";
    }

?>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

请使用 type 属性代替ajax方法中的method。这是错误的。

$('#btn_report').click(function () {
    if (confirm("Are you sure?")) {
        var id = [];
        $(':checkbox:checked').each(function (i) {
            id[i] = $(this).val();
            alert(id[i]); //this is correctly printed
        });
        if (id.length === 0) {
            alert("No record selected");
        } else {
            $.ajax({
                url: 'export.php',
                type: 'POST',
                data: {id: id},
            });

        }
    } else {
        return false;
    }
});

答案 1 :(得分:0)

在export.php文件中尝试执行此操作,删除所有html代码,因为您仅回显以发送回结果,如果需要添加html,则必须将其与结果连接起来,然后回显结果。

<?php 
if(isset($_POST["id"])){
    echo 'it works';
}else{
    echo 'not worked';
}
?>

并查看是否在控制台中得到响应,请更改ajax代码以进行测试

$.ajax({
    url: 'export.php',
    type: 'POST',
    data: {id: id},
    success: function(response) {
        console.log(response);
    }
});

更多说明 当您回响ajax请求时,它会将响应发送回浏览器。 因此,您应该做的是准备一个结果字符串,并在对该字符串执行任何类型的处理之后,将所需的所有数据存储在响应中,当您准备发送响应时,您只需回显该字符串然后退出即可; 下面我尝试修复您的代码,希望它可以帮助您理解。

<?php

$connect = mysqli_connect('localhost', 'user', 'pass', 'db' );

if(isset($_POST["id"])){

    $result = '';
//      echo 'break1';
    foreach($_POST["id"] as $id) {

        $sel = "SELECT * FROM `user_details` WHERE `Codice prodotto` = $id";
//          echo $sel . "<br>";
        $res = mysqli_query($connect, $sel);
        $result .="<table border='1'>
                                                        <tr>
                                                <th></th>
                                                <th>Codice prodotto</th>
                                                <th>Relazione tecnica</th>
                                                <th>Modello offerto</th>
                                                <th>Descrizione</th>
                                                <th>Immagine</th>
                                                <th>Tipologia di Ancoraggio</th>
                                                <th>Design</th>
                                                <th>Illuminazione</th>
                                                <th>FSP</th>
                                                <th>DATI TECNICI</th>
                                                <th>Dissolvenza delle ombre</th>
                                                </tr>";

        while($row = mysqli_fetch_array($res))
        {
            $result .= '<tr id="' . $row['Codice prodotto'] . '">';
            $result .= '<td><input type="checkbox" name="codice[]" class="delete_prodotto" value="' . $row['Codice prodotto'] . '"></td>';
            $result .= "<td>" . $row['Codice prodotto'] . "</td>";
            $result .= "<td>" . $row['Relazione tecnica'] . "</td>";
            $result .= "<td>" . $row['Modello offerto'] . "</td>";
            $result .= "<td>" . $row['Descrizione'] . "</td>";
            $result .= "<td>" . $row['Immagine'] . "</td>";
            $result .= "<td>" . $row['Tipologia di Ancoraggio'] . "</td>";
            $result .= "<td>" . $row['Design'] . "</td>";
            $result .= "<td>" . $row['Illuminazione'] . "</td>";
            $result .= "<td>" . $row['FSP'] . "</td>";
            $result .= "<td>" . $row['DATI TECNICI'] . "</td>";
            $result .= "<td>" . $row['Dissolvenza delle ombre'] . "</td>";
            $result .= "</tr>";
        }
        $result. = "</table>"; 
    }

}
else {
    $result = "no value";
}

echo $result;
exit;

?>