答案 0 :(得分:1)
您当前的代码存在一些问题:
当您选择(?:(?!</?script[\s>]).)*
或选择</script>
时,您使用相同的单参数启动相同的功能。该函数不知道您提供的参数是price-from
还是price-to
。对此的许多解决方案之一是不给它任何参数并要求它获取所选值
price-from
使用您提供XHR对象的当前网址,您的请求看起来像这样(假设str =“1000”):
price-to
在您的PHP代码中,&
等于字符串priceQuery.php?min=1000max=1000
,$_GET['min']
永远不会设置
对于您当前的PHP代码,我认为没有错,所以这里的
HTML:
"1000max=1000"
Javascript:
$_GET['max']
答案 1 :(得分:0)
您可以使用下一个选项覆盖最小/最大值。 这是正确的代码:
raise ActiveRecord::Rollback
&#13;
function setPrice() {
var min = parseInt(document.getElementById('price-from').value),
max = parseInt(document.getElementById('price-to').value);
if(max < min) {
var maxLocal = max;
max = min;
min = maxLocal;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("section1").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","priceQuery.php?min=" +min + "max=" +max, true);
xmlhttp.send();
}
&#13;
答案 2 :(得分:0)
你应该试试这个:
<select id="price-from" onchange="setPrice(this.value)">
<option selected value="500">£500</option>
<option value="1000">£1,000</option>
<option value="2000">£2,000</option>
<option value="3000">£3,000</option>
<option value="4000">£4,000</option>
<option value="5000">£5,000</option>
<option value="6000">£6,000</option>
<option value="7000">£7,000</option>
<option value="8000">£8,000</option>
<option value="9000">£9,000</option>
<option value="10000">£10,000</option>
<option value="20000">£20,000</option>
</select>
<p id="to">To</p>
<select id="price-to" onchange="setPrice(this.value)">
<option value="500">£500</option>
<option value="1000">£1,000</option>
<option value="2000">£2,000</option>
<option value="3000">£3,000</option>
<option value="4000">£4,000</option>
<option value="5000">£5,000</option>
<option value="6000">£6,000</option>
<option value="7000">£7,000</option>
<option value="8000">£8,000</option>
<option value="9000">£9,000</option>
<option value="10000">£10,000</option>
<option selected value="20000">£20,000</option>
</select>
对于Javascript,你应该尝试这样的jQuery:
<script type="text/javascript">
$(document).ready(function(){
var minValue,maxValue;
$("#price-from").on("change",function(){
minValue=$(this).val();
});
$("#price-to").on("change",function(){
maxValue=$(this).val();
});
if(minValue!='')
$.post( "priceQuery.php", { min: minValue, max: maxValue } );
});
</script>
你的PHP代码是这样的:
<?php
$con = mysqli_connect('localhost','root','','nbgardens');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,"nbgardens");
$min = (isset($_POST['min']) ? $_POST['min'] : null);
$max = (isset($_POST['max']) ? $_POST['max'] : null);
$sql="SELECT * FROM products WHERE product_price >= '".$min."' AND product_price<= '".$max."'";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_assoc($result)){
echo"<div class='browse-image'>
<a href='#'>
<p class='price'>£" . $row['product_price'] . "</p>
<img src='" . $row['product_img'] . "' width='200px' class='thumb'>
<figcaption>" . $row['product_title'] . "</figcaption></a></div>";
}
mysqli_close($con);
?>