必须刷新或单击菜单两次才能执行AJAX


Have To Refresh or Click The Menu Twice to execute AJAX?

所以我遇到了一个非常简单的问题,我似乎无法解决。。。我只是使用AJAX重新加载一个图像表,所以当用户选择一个选项(在本例中是一个名称)时,它会重新加载图像框。到目前为止,它一直有效,但唯一的问题是我要么需要进行"硬"刷新,要么两次选择相同的选项。否则,它真的不会起作用。如果有人有解决方案,我会尽可能多地发布代码。谢谢

jQuery:

    $('select.hotelmain').on('change', function (e){
    var id = $(this).val();
    var dataString = 'id=' + id;
    e.preventDefault();
    alert('got here');
    $.ajax({
        type: "POST",
        url: "../ajax/ajax_images.php",
        data: dataString,
        cache: false,
        success: function (html) {
            $("ul.image-list").html(html);
        }
    });
    $('p.selectMessage').css('display','none');
    $('.inner-container').css('display','block');
    $('.display').css('height','0px');
    return false;
});

PHP:

<?php
session_start();
$hotelId = $_SESSION['curHotelId'];
$hotelDir = '../assets/php/upload/'.$hotelId.'/*';
$count = 1;
if ($hotelId) {
    foreach(glob($hotelDir) as $filename=>$hotelvalue){
        echo '<li id="del'.$count.'" class="image-list"><img src="'.$hotelvalue.'" width="50px" height="50px"/><p class="filename">' . basename($hotelvalue) . '</p> <a class="btn btn-mini btn-primary image-list" style="width: 18px;margin-top: -25px;border-radius: 100%;-moz-border-radius: 100%;-o-border-radius: 100%;-webkit-border-radius: 100%;" id="del'.$count.'" value="Delete"><i class="icon-remove-circle icon-2" style="margin-left:-3px;"></i></a></li>' . "'n" . "<br>";
        $count++;
    }
}else{}
?>

再说一次,任何事情都有帮助,我只是似乎无法让它做我想做的事。谢谢

你需要做两次相同的选项,因为你有.on(change)。因为它是一样的,所以实际上没有改变。

编辑:不要更改,而是尝试直播

看起来您从会话中获得的是hotreId,而不是$_POST变量
您何时设置$_SESSION["curHotelId"]?