php
  • mysql
  • ajax
  • select
  • option
  • 2012-02-26 56 views 0 likes 
    0

    我试图使用AJAX,以便在下拉菜单(模块标题)中选择一个选项时,它将使用该值,使用该模块标题对数据库中的所有记录执行SQL查询,然后发布与模块标题相关的模块代码,即模块标题:团队项目=模块代码:11COB290。AJAX返回选择框的值

    继承人的启动代码:

    <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

    酷!你有什么问题? – 2012-02-26 00:05:51

    +0

    它不返回我需要的数据,它不会回应它 – ScottD 2012-02-26 00:07:25

    +0

    尝试做: alert(xmlhttp.responseText); 而不是:document.getElementById(“result”)。innerHTML = xmlhttp.responseText; 这会让你知道PHP控制器是否正确回复。如果你没有任何警报意味着它可能是一个“连接”问题。尝试还:alert(xmlhttp.readyState +“”+ xmlhttp.status)查看返回的代码是什么。这将帮助我们识别您的问题。 – Kursion 2012-02-26 12:33:54

    回答

    0

    您需要像

    var mydata=xmlhttp.responseText; 
    

    然后用mydata变量做一些事情。

    +0

    他做到了。 document.getElementById(“result”)。innerHTML = xmlhttp.responseText; – Kursion 2012-02-26 12:30:23

    +0

    我可以发誓不在那里,但我想我只是错过了它。 – TecBrat 2012-02-26 23:46:24

    相关问题