$ .get在代码再次执行之前不起作用

时间:2014-05-06 23:14:15

标签: php jquery ajax

在我的主页面中,我有一个从数据库填充的select元素:

<select id="report" class="selectpicker input-sm">
    <option value=''>Choose a date</option>
    <?php foreach($this->report as $report) {?>
        <option><?php echo $report->timepoint_name;?></option>
    <?php } ?>
</select>

我希望当我选择一个选项时,该选项的文本将添加到我的会话变量中,我想为此使用Ajax。在同一个文件中,我添加了这个javascript代码:

$('#report').on('change', function() {
    var report = $('#report').find(':selected').text();
    $.get("ajax.php", {'rep':report}, function(data,status){
        alert("Data: " + data + "\nStatus: " + status);
    });
});

当我从我的应用程序注销时,我使用php函数destroy_session()销毁会话,现在第一次登录文件ajax.php没有执行,我必须再次运行代码来执行php ajax.php中的代码。

我用firebug尝试了我的源代码,发出了ajax请求,控制台显示了这一行:

GET http://localhost/myproject/news_update/ajax.php?rep=1+Aug+2010+to+31+Jul+2011  302 Found 5ms

这是什么错误?

1 个答案:

答案 0 :(得分:1)

首先确保您的浏览器没有缓存响应并实际使用以下代码段进行ajax调用:

$.ajaxSetup({ cache: false });

然后,请理解.change不会立即触发,只有在您与该选择元素进行交互并且更改该值时才会触发。如果您希望它立即开火,您可以这样做:

$('#report').on('change', function() {
    var report = $('#report').find(':selected').text();
    $.get("ajax.php", {'rep':report}, function(data,status){
        alert("Data: " + data + "\nStatus: " + status);
    });
}).trigger('change'); // trigger change event right away