2013-08-21 5 views
0

У меня есть раскрывающееся меню AJAX, в котором представлены различные параметры для пользователя на основе трех разных параметров. После их выбора список создается ниже.Выбор выпадающего меню AJAX

Как пользователь щелкает и пункта, он берется:

legat.php?id=[number] 

Моя проблема в том, что когда пользователь нажимает на кнопку «go back» в браузере, список AJAX уже больше не показывают, генерируемая список.

Входы ("dropdown selections") в выпадающих меню одинаковы, но приведенный ниже список не генерируется.

Это большой недостаток юзабилити, так как пользователю необходимо будет снова выбрать три параметра.

Как это решить?

JavaScript:

function findLegater(val1, val2, val3) { 

var stu = document.getElementById(val1).value 
var ud = document.getElementById(val2).value 
var kva = document.getElementById(val3).value 

if (stu=="N" && ud =="0" && kva =="0") { 
document.getElementById("txtHint").innerHTML=""; 
} 
else { 
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 (xmlhttp.readyState==4 && xmlhttp.status==200) { 
     document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
    } 
} 

xmlhttp.open("GET","getlegat.php?s="+stu+"&u="+ud+"&k="+kva,true); 
xmlhttp.send(); 
} 
} 

PHP (получить вход):

$s=$_GET["s"]; 
$u=$_GET["u"]; 
$k=$_GET["k"]; 

include 'msql/msql-connect.php'; 

if ($s!= "N" && $u != "0" && $k!="0") { 
$query = "SELECT * FROM legater WHERE studiegrad LIKE '%$s%' and studie LIKE '%$u%' and     kvartal LIKE '%$k%'"; 
} 
else if ($s!= "N" && $u == "0" && $k=="0") { 
$query = "SELECT * FROM legater WHERE studiegrad LIKE '%$s%'"; 
} 
else if ($s!= "N" && $u != "0" && $k=="0") { 
$query = "SELECT * FROM legater WHERE studiegrad LIKE '%$s%' and studie LIKE '%$u%'"; 
} 
else if($s== "N" && $u != "0" && $k=="0") { 
$query = "SELECT * FROM legater WHERE studie LIKE '%$u%'"; 
} 
else if($s== "N" && $u != "0" && $k!="0") { 
$query = "SELECT * FROM legater WHERE studie LIKE '%$u%' and kvartal LIKE '%$k%'"; 
} 
else if($s== "N" && $u == "0" && $k!="0") { 
$query = "SELECT * FROM legater WHERE kvartal LIKE '%$k%'"; 
} 
else if($s!= "N" && $u == "0" && $k!="0") { 
$query = "SELECT * FROM legater WHERE studiegrad LIKE '%$s%' and kvartal LIKE '%$k%'"; 
} 

// Execute query 
$result = mysql_query($query) or die ("Error in" . $query); 
$number = mysql_num_rows($result); 

// Check result 
if ($number == 0) { 
    echo "Ingen legater fundet"; 
} 
else { 
    while ($row = mysql_fetch_array($result)) { 
    echo "<li><a href=\"legat.php?id=" . $row['id'] . "\">" . $row['navn'] . "</a> </li>"; 
    } 
} 

// free result set memory 
mysql_free_result($result); 

// close connection 
mysql_close($connection); 
+0

См. Http://www.jscripters.com/ajax-disadvantages-and-advantages/ для недостатков AJAX. – jeff

+1

'mysql_' устарел. Вместо этого используйте 'mysqli'. И 'mysql_num_rows' является полной потерей мощности сервера. Вместо этого используйте 'SELECT COUNT (id) как id_rows'. – M1K1O

ответ

0

Вы можете использовать сеансы для этого ... когда пользователь выбирает из выпадающего сохранить его на сессию .. на страницу загрузки получить идентификатор от сессии и отправить его на сервер, получить результат .. после вас сеанс над уничтожить его.

Смежные вопросы