连续的ajax查询返回旧信息

rks48beu  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(286)

这个问题在这里已经有答案了

$.ajax数据未将指定值过帐到$\u post(2个答案)
两年前关门了。
非常感谢。
场景:我正在尝试通过jquery和带有多个字段的ajax来查询mysql数据库。第一次搜索运行正常。更新字段并重新搜索后,将显示原始搜索的数据,不更新。
我尝试过的:最初,我认为这可能是一个缓存问题,所以我设置cache:false。我想数据可能是在我的目标div中串联的,所以我添加了一行,使我的目标div('#inserted#itemŠdata').html('')等于一个空白字符串,这样就干净了(我甚至尝试在'success:'参数中添加一行(可能?)使数据数组为空:data:{}(我不知道是不是这样,但我试过了)。
所以如果没有更多的adu,我可怕的代码:

//students_get.php
...
<input class="input" type="text" name="first_name" id="first_name" value="">
<input class="input" type="text" name="last_name" id="last_name" value="">
<select name="residency" id="residency">
<option value="">---</option>
    <option value="Resident">Resident</option>
    <option value="Non-Resident">Non-Resident</option>
    <option value="AB540">AB540</option>
</select>
...
<input type="button" name="search" id="btnSearch" value="search">
<div style="width:60%; margin:0 auto;" id="inserted_item_data"></div>

...

<script>
    $(document).ready(function () {

       //@TODO Alternatively research stringify or serialize funcs
        var first_name = $('#first_name').val();
        var last_name = $('#last_name').val();
        var residency = $('#residency').val();

        $('#btnSearch').click(function () {
        $('#inserted_item_data').html('');
        console.log("Item Data Cleared");

        function fetch_item_data() {
            $.ajax({
                url: "students_get_fetch.php",
                method: "POST",
                cache: false, //disallowing cache
                data: {
                    first_name: first_name,
                    last_name: last_name,
                    residency: residency
                },

                success: function (data) {
                    alert(data);
                    $('#inserted_item_data').html(data);
                    data: {}; //let's try emptying this array???
                }
            })
        }
         fetch_item_data();

    });

});

//学生\u get \u fetch.php//我的fetch php代码


* <?php

//fetch.php
$connect = mysqli_connect("webdev-2", "jhunt", "1234", "test");

$first_name = $_POST["first_name"];
$last_name = $_POST["last_name"];
$residency = $_POST["residency"];

$output = '';
//$query = "SELECT * FROM students ORDER BY last_name DESC";
$query = "SELECT * FROM students WHERE 
last_name LIKE '%". $last_name . "%' AND 
first_name LIKE '%". $first_name . "%' AND 
residency LIKE '%". $residency . "%' ";

$result = mysqli_query($connect, $query);
$output = '<br /><h3 align="center">Student (Quick Look)</h3><table class="table table-bordered table-striped"><tr><th width="31%">First Name</th><th width="31%">Last Name</th><th width="31%">Residency</th><th width="6%">Detail</th></tr>';

while($row = mysqli_fetch_array($result))
{
 $output .= '
 <tr>
  <td>'.$row["first_name"].'</td>
  <td>'.$row["last_name"].'</td>
  <td>'.$row["residency"].'</td>
  <td>'.$row["id"].'</td>
  </tr>
 ';
}
$output .= '</table>';
echo $output;
?>*

非常感谢您的指导。当然,symantical和最佳实践是我最肯定错过的。谢谢你,j

bmp9r5qi

bmp9r5qi1#

当页面加载时,您获取输入值并将其分配给变量,但是您不会再次检查这些值。
每次单击按钮时,您只是在使用加载页面时出现的过时值。
通过在click事件中移动变量赋值,它们将使用输入的当前值,而不是页面加载时的值。

$(document).ready(function () {

    $('#btnSearch').click(function () {
        var first_name = $('#first_name').val();
        var last_name = $('#last_name').val();
        var residency = $('#residency').val();

        fetch_item_data(first_name, last_name, residency);
    });

});

function fetch_item_data(first_name, last_name, residency) {
    $.ajax({
        url: "students_get_fetch.php",
        method: "POST",
        cache: false, //disallowing cache
        data: {
            first_name: first_name,
            last_name: last_name,
            residency: residency
        },
        success: function (data) {
            alert(data);
            $('#inserted_item_data').html(data);
        }
    });
}

我还做了一些小的句法修正。正如上面所指出的,您可能想要声明 fetch_item_data 其他地方。此外,您的 data: {} 行不是必需的,也不是有效的。

相关问题