除非浏览器完全关闭并重新打开,否则数据库输入不会显示在IE中

时间:2011-08-01 21:58:37

标签: php javascript mysql json pdo

我的表格目前有2个下拉菜单。从第一个下拉列表中选择一个选项会填充第二个下拉列表。

这很好用。我只是注意到,当我在第二个下拉列表中添加一个新项目时,它将在数据库中输入它,但它不会显示在Internet Explorer的下拉菜单中。但是,如果我完全关闭浏览器并重新打开它,则会显示新条目。它几乎看起来像缓存类型错误。它适用于所有其他浏览器。

我正在使用的代码是

function populateSubCategory() {

   $.getJSON('../inc_selectlogic.php', {category_id:$('#category_id').val()}, function(data) {

    var select = $('#sub_category_id');
    var options = select.attr('options');
    $('option', select).remove();
    $("#sub_category_id").append('<option value="">CATEGORY</option>');
    $.each(data, function(index, array) {
        $("#sub_category_id").append('<option value='+array['sub_category_id']+'>'+ array['sub_category_name'] +'</option>');

    });

});

}

PHP是调用

$dsn = "HIDDEN";
$username = "HIDDEN";
$password = "HIDDEN";

$pdo = new PDO($dsn, $username, $password);

$rows = array();
if(isset($_GET['category_id'])) {
    $stmt = $pdo->prepare("SELECT SQL_NO_CACHE sub_category_name, sub_category_id FROM sub_categories WHERE category_id = ?");
    $stmt->execute(array($_GET['category_id']));
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
echo json_encode($rows);

1 个答案:

答案 0 :(得分:1)

您可以通过在请求网址末尾添加一个变量来解决缓存问题,该变量每次都会使请求唯一。

var time = new Date().getTime();
$.getJSON('../inc_selectlogic.php?time=' + time, {category_id:$('#category_id').val()}, function(data) {