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を使用しようとしていますが、私はひどく間違っているのですか?

4

1 に答える 1

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);
于 2013-01-08T12:01:55.127 に答える