我有一个ID为#filter
<input type="button" name="filter" id="filter" value="Filter" class="btn btn-info" />
我的Ajax脚本如下:
<script>
$(document).ready(function(){
$('#filter').click(function(){
var rangestart = $('#rangestart').val();
var rangeend = $('#rangeend').val();
if(rangestart != '' && rangeend != '')
{
$.ajax({
method:"POST",
data:{rangestart:rangestart, rangeend:rangeend},
success:function(data)
{
window.location = 'http://www.test/daterange/dates.php?rangestart=' + rangestart +'&rangeend=' + rangeend
}
});
}
else
{
alert("Please Select Date");
}
});
});
我点击了我的#filter
按钮,它按预期工作。
rangestart
正在传递输入框的值(在04-15-2017
下方的情况下)
rangeend
正在传递输入框的值(在04-20-2017
下面的情况下)
因此页面重新加载,地址栏中的网址为:
http://www.example.com/daterange/dates.php?rangestart=04-15-2017&rangeend=04-20-2017
在我的dates.php
文件中
$rangestart = $_POST['rangestart'];
$rangeend = $_POST['rangeend'];
位于页面顶部。但即使地址栏中传递的数据$rangestart
和$rangeend
都是空的,因此无法按预期对其进行任何操作。
任何人都知道这个问题是什么?
答案 0 :(得分:2)
如果您想在地址栏中访问它们,请使用$ _GET ['rangestart']。
答案 1 :(得分:1)
window.location
重定向是GET请求,因此您需要在dates.php中使用$_GET
而不是$_POST
$rangestart = $_GET['rangestart'];
$rangeend = $_GET['rangeend'];
答案 2 :(得分:1)
AJAX方法用于加载新信息而不刷新页面。如果您正在重新加载响应,那么如果您通过查询字符串传递日期会更好。
出现错误,我认为PHP脚本没有为该请求发送任何响应。您可以在NETWORK中检查响应&gt;开发人员工具栏的XHR部分。另外,将错误函数添加到ajax调用以检查错误,如下所示,
$.ajax({
method: "POST",
data: { rangestart: rangestart, rangeend: rangeend },
success:function(data) {
window.location = 'http://www.test/daterange/dates.php?rangestart=' + rangestart +'&rangeend=' + rangeend
},
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
}
});