连续的Ajax查询返回旧信息

时间:2018-07-10 18:44:28

标签: php jquery mysql ajax

非常感谢。

场景: 我正在尝试通过具有多个字段的jQuery和AJAX查询mySQL数据库。第一次搜索运行正常。更新字段并重新搜索后,将显示原始搜索中的数据,不会更新。

我尝试过的方法: 最初,我认为这可能是缓存问题,因此我将cache设置为:false。 我以为数据可能是在目标div中串联的,所以我添加了一行以使目标div('#inserted_item_data')。html('')等于空白字符串,这样很干净。 (现在显示出我的总体看法)我什至尝试在'success:'参数中添加一行,这(也许是?)使数据数组为空:data:{}; (我不知道它是否可以那样工作,但我试了一下)。

因此,如果没有进一步的Adu,我的代码很糟糕:

collect()

// students_get_fetch.php //我的提取php代码

//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();

    });





});

高度赞赏您可以提供的任何指导。当然,我肯定会错过一些对称的最佳实践。 非常感谢你, J

1 个答案:

答案 0 :(得分:1)

您正在获取输入的值,并在页面加载时将其分配给变量,但是您永远不要再次检查这些值

每次单击按钮,您只是在重新使用页面加载时出现的过时值。

通过在click事件中将变量分配移动到 中,它们将使用输入的 current 值,而不是页面加载时的值。

$(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);
        }
    });
}

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