在我的主页面中,我有一个从数据库填充的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
这是什么错误?
答案 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