我正在尝试获取有关定向系统中房间和塔楼的信息。这是一个搜索设备投掷复选框。关键是要选择每个选项来过滤从数据库中恢复的信息。
问题是我尝试GET的值甚至没有回显,所以我不能在查询中使用它们。另一方面,它们显示在URL中,如果我添加一个提交按钮,我可以获取我想要的信息,但这里的想法是在没有按钮的情况下立即获取信息。
这是我正在使用的刷新代码
var auto_refresh = setInterval(
function()
{
$("#results").load("searchroom.php").fadeIn("slow");
}, 1000);
$.ajaxSetup({ cache: false });
这就是我保存在URL
中选择的值的方法$('input[type="checkbox"]').on('change', function(e){
var data = $('input[type="checkbox"]').serialize(),
loc = $('<a>', {href:window.location})[0];
$.post('/showbytipo.php?'+data);
if(history.pushState){
history.pushState(null, null, loc.pathname+'?'+data);
}
});
这是HTML输入
<form method="GET" action="searchroom.php" id="myform" name="myform">
<p>TIPOLOGIA</p>
<ul>
<li><input class="tipologia" id="tipologia"name="tipologia" type="checkbox" value="services" ><label>Serviços</label></li>
<li><input class="tipologia" name="tipologia" type="checkbox" value="class"><label>class</label></li>
</ul>
<p>TORRE</p>
<ul>
<li><input class="torre" name="torre" value="a" type="checkbox" value="a" ><label>A</label></li>
<li><input class="torre" name="torre" value="b" type="checkbox" value="b"><label>b</label></li>
</ul>
</form>
<div id="results" >
</div>
这是从网址
获取值的PHP代码 <?php
include("connect.php");
$tipo=$_GET['tipologia'];
echo $tipo;
$torre=$_GET['torre'];
echo $torre;
//$tipo='services';
$sql = "select * from rooms where tower='$torre' AND floor='$piso' AND typology='$tipo'";
//$sql = "select * from rooms where typology='$tipo'";
$query = mysql_query($sql) or die ("erro na query");
while($row = mysql_fetch_array($query)) {
echo $row["name"];
echo $row["tower"];
echo $row["typology"];
}
echo 'ola';
?>
答案 0 :(得分:0)
除了通过直接将变量放到查询中而导致严重的安全问题之外,输入字段的名称相同。例如:name =“tipologia”和name =“torre”有2个实例,在url中只有第二个实例生效(如果已选中)。
如果你想传递多个值,你的名字应该是:name =“tipologia []”,这样你就可以在php中看到它们作为一个数组。
我也知道这是无关紧要的,但为什么你要使用$ .post,因为你想将值传递给get?为什么不使用$ .get代替?
编辑:
我没有看到刷新部分问题。 如果要传递代码应该是的变量,则不要在刷新调用中传递任何变量:
var auto_refresh = setInterval(
function()
{
$("#results").load("searchroom.php", $('#myform').serialize()).fadeIn("slow");}, 1000);
$.ajaxSetup({ cache: false });
我希望你知道你在做什么,因为刷新的整个概念对我来说非常混乱,但你仍然有问题来看复选框中的空值:
你应该有一个javascript代码来更新一个单独的隐藏字段,它保存tipologia或torre字段的状态。否则你不能依赖复选框,它们的值将始终是最后一个复选框。
当然最简单的方法是使用单选按钮,然后隐藏字段就不会有这个问题。
为了调试变量,你应该使用var_dump($ _ GET ['torre']),它会准确地为你提供它。所以,如果它是空的你应该看到它,或者如果它是未定义的,你将看到null。
希望有所帮助。