2014-05-06 64 views
1

在我的主网页我已经从数据库填充,因为这一个选择的元素。获得不起作用:

<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,我必须运行第二次在ajax.php执行php代码的代码。

我试着用萤火我的源代码,Ajax请求作出与控制台显示该行:

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

这是什么错误?

+0

因为您没有更改下拉菜单。或者因为你没有在ajax.php上设置no-cache标头。当你使用$ .post时,你为什么在问题标题中说$ .get? – developerwjk

+0

当然,我改变了下拉,我怎么可以测试呢!但是你的意思是没有缓存头文件?对不起(我使用$ .get) –

+0

您可能会遇到后续Ajax请求的问题(特别是在IE中),而不是实际访问服务器,但是如果您没有在PHP上设置no-cache标头,则从缓存中提取它响应Ajax请求。 – developerwjk

回答

1

首先确保你的浏览器不cacheing响应,实际上与下面的代码片段进行Ajax调用:

$.ajaxSetup({ cache: false }); 

然后,请明白.change将不会触发马上,它只火灾,如果你互动用该选择元素AND改变该值。如果您希望它立即启动,您可以这样做:

$('#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 
+0

我有同样的问题! –

+0

你能描述更详细地重现步骤吗?也可以尝试用萤火虫打开并查看是否正在发出ajax请求。 – Fresheyeball

+0

是的,萤火虫它是非常好的工具,谢谢我解决了错误。当我第一次登录时,我的'ajax.php'的位置是错误的。 –