2013-01-08 35 views
0

为了解决我所面临的困境,我正在试图学习ajax/jquery代码段。在显示选定选项时遇到麻烦的问题

下面是我的ajax:

 $('#sessionsDrop').change(function(){ 
      var search_val = $(this).val(); 
      $.post("addstudentsession.php", 
      {studenttextarea : search_val}, 
      function(data){ 
    if (data.length>0){ 
    $("#studentselect").html(data); 
    } 

    }); 

在我保持得到一个空白页,每次我打开我的addstudentsession.php剧本的那一刻。这是我工作的唯一脚本,所以我不确定我是否想将ajax链接到它自己。但是,下面是我想做的事:

我有一个下拉菜单下面:

<select name="session" id="sessionsDrop"> 
<option value="">Please Select</option> 
<option value='20'>EWYGC - 10-01-2013 - 09:00</option> 
<option value='22'>WDFRK - 11-01-2013 - 10:05</option> 
<option value='23'>XJJVS - 12-01-2013 - 10:00</option> 
<option value='21'>YANLO - 11-01-2013 - 09:00</option> 
<option value='24'>YTMVB - 12-01-2013 - 03:00</option> 
</select> </p> 

下面我有它显示从正在选择评估学生名单多重选择框下拉上面的菜单:

$studentactive = 1; 

$currentstudentqry = " 
SELECT 
ss.SessionId, st.StudentId, st.StudentAlias, st.StudentForename, st.StudentSurname 
FROM 
Student_Session ss 
INNER JOIN 
Student st ON ss.StudentId = st.StudentId 
WHERE 
(ss.SessionId = ? and st.Active = ?) 
ORDER BY st.StudentAlias 
"; 

$currentstudentstmt=$mysqli->prepare($currentassessmentqry); 
// You only need to call bind_param once 
$currentstudentstmt->bind_param("ii",$sessionsdrop, $stuentactive); 
// get result and assign variables (prefix with db) 

$currentstudentstmt->execute(); 

$currentstudentstmt->bind_result($dbSessionId,$dbStudentId,$dbStudentAlias,$dbStudentForename.$dbStudentSurname); 

$currentstudentstmt->store_result(); 

$studentnum = $currentstudentstmt->num_rows(); 

$studentSELECT = '<select name="studenttextarea" id="studentselect" size="6">'.PHP_EOL;  

if($studentnum == 0){ 

$studentSELECT .= "<option disabled='disabled' class='red' value=''>No Students currently in this Assessment</option>"; 


}else{ 

while ($currentstudentstmt->fetch()) { 

$studentSELECT .= sprintf("<option disabled='disabled' value='%s'>%s - %s s</option>", $dbStudentId, $dbStudentAlias, $dbStudentForename, $dbStudentSurname) . PHP_EOL; 
} 

} 

$studentSELECT .= '</select>'; 

但我有一个小问题,我需要一种方法,当用户选择从下拉菜单中的选项,以便能够显示学生在选择框的列表。 php代码的问题在于必须提交页面才能找到结果。

所以这就是为什么我试图使用Ajax来解决这个问题,但是我做错了什么?

回答

0

使用Ajax调用尝试如下,

var XMLHttpRequestObject = false; 

if (window.XMLHttpRequest) { 
XMLHttpRequestObject = new XMLHttpRequest(); 
} else if (window.ActiveXObject) { 
try { 
    XMLHttpRequestObject = new ActiveXObject("Msxml2.XMLHTTP"); 
} catch (e) { 
    try { 
     XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); 
    } catch (e) { 
     XMLHttpRequestObject = false; 
    } 
} 
} 
$('#sessionsDrop').change(function(){ 
var search_val = $(this).val(); 
if (XMLHttpRequestObject) { 

    XMLHttpRequestObject.open("POST", "addstudentsession.php", true); 

    XMLHttpRequestObject.setRequestHeader('Content-Type', 
      'application/x-www-form-urlencoded'); 

} 
XMLHttpRequestObject.onreadystatechange = function() { 
    if (XMLHttpRequestObject.readyState == 4 
      && XMLHttpRequestObject.status == 200) { 

     y = XMLHttpRequestObject.responseText; 
        $("#studentselect").html(y); 


     } 

}; 
}; 

XMLHttpRequestObject.send("studenttextarea=" + search_val);