2012-02-26 7 views
0

Я пытаюсь использовать AJAX, чтобы при выборе опции в выпадающем меню (Title Module) оно принимает значение, выполняет SQL-запрос ко всем записям в базе данных с этим названием модуля, а затем издает модульный код, относящийся к названию модуля, т.е. Название модуля: Team Projects = Module Code: 11COB290.AJAX Возвращаемое значение ячейки выбора

Heres исходный код:

<td align="center"> 
<select name='ModuleTitle' id='ModuleTitle' onChange='select_code()' style='width:100%;'> 
<option>Select...</option> 

    <?php 
     //3. Perform database query 
     $result = mysql_query("SELECT * FROM Module 
     ORDER BY `ModTitle` ASC;", $connection); 
     if(!$result){ 
      die("Database query failed: " . mysql_error()); 
     } 
     //4. Use Returned Data 
     while ($row = mysql_fetch_array($result)) { 
      $module = $row[2]; 
      echo "<option name='{$module}'>{$module}</option><br />";  
     } 
    ?> 
    </select> 
    </td> 

    <td align="center"> 
    <span id="result"></span> 


    </select> 
</td> 

Тогда Херес .js файл:

var xmlhttp; 

// Give the function a unique name, this is what your HTML will call to run the AJAX 
function select_code() { 

    // This is all just setting up the variable, ignore it 
    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("result").innerHTML = xmlhttp.responseText; 

     } 

    }; 

    var val = document.getElementById("ModuleTitle"); 
    var title = val.options[val.selectedIndex].text; 


    var parameters = "title=" 
        + title; 


    xmlhttp.open("POST", "ajaxexample2mod.php", true); 
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xmlhttp.send(parameters); 

} 

И Окончательный файл PHP (ajaxexamplemod.php):

<? 



    <?php require_once("includes/connection.php"); ?> 
<?php require_once("includes/functions.php"); ?> 
<?php include("includes/headsec.php"); ?> 



    <?php 
    $title = $_POST['title']; 

    //3. Perform database query 
    $result = mysql_query("SELECT * FROM Module 
    WHERE ModTitle = {$_POST['title']} 
    ORDER BY `ModTitle` ASC;", $connection); 
    if(!$result){ 
     die("Database query failed: " . mysql_error()); 
    } 
    //4. Use Returned Data 
    while ($row = mysql_fetch_array($result)) { 
     $module = $row[3]; 
     echo $module; 
}  



?> 
+1

Прохладный! Каков твой вопрос? –

+0

Он не возвращает данные, которые мне нужны, это не будет Echo it – ScottD

+0

Попробуйте сделать: alert (xmlhttp.responseText); Вместо: document.getElementById ("result"). InnerHTML = xmlhttp.responseText; Это даст вам знать, правильно ли отвечает контроллер PHP. Если у вас нет предупреждений, это означает, что это может быть проблема «соединения». Попробуйте также: alert (xmlhttp.readyState + "" + xmlhttp.status), чтобы узнать, что такое возвращаемый код. Это поможет нам определить вашу проблему. – Kursion

ответ

0

Вам нужно что-то вроде

var mydata=xmlhttp.responseText; 

И затем сделайте что-нибудь с переменной mydata.

+0

Он сделал это. document.getElementById ("результат"). InnerHTML = xmlhttp.responseText; – Kursion

+0

Я мог бы поклясться, что этого не было раньше, но, наверное, я просто пропустил его. – TecBrat

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