Ajax、PHP 和 MySql

Posted

技术标签:

【中文标题】Ajax、PHP 和 MySql【英文标题】:Ajax, PHP and MySql 【发布时间】:2016-05-09 23:26:24 【问题描述】:

我在使用 Ajax 时遇到问题。当我更改我的选择值时没有任何反应。

我有一个 id 为 textHint 的 div,以便打印结果。

这是我的选择:

<form>              
    <select id="choix" name="choix" onchange="showUser(this.value)">
        <div class="tutorial_list">
            <?php 
                $db = mysql_connect('localhost', 'root', 'root'); 
                mysql_select_db('Projet',$db); 

                $sql = 'select NomPromo, NumPromo from Promo';
                $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

                while ($data = mysql_fetch_array($req))
                     echo'<option value="'.$data['NumPromo'].'">'.$data['NomPromo'].'</option>';
                
            ?>
        </div>
    </select>
</form>

这是我的脚本:

<script>
    function showUser(str) 
        if (str == "") 
           document.getElementById("txtHint").innerhtml = "";
           return;
            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","data.php?q="+str,true);
                xmlhttp.send();
        
    
</script>

这是我的 data.php :

<?php 

    $q = intval($_GET['q']);

    $db = mysql_connect('localhost', 'root', 'root'); 
    mysql_select_db('Projet',$db);

    $sql = "select Nom, Prenom from User where Groupe ='".$q."'";
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

    while ($data = mysql_fetch_array($req))
         echo $data['Nom'].' '.$data['Prenom'];
    
?>  

【问题讨论】:

mysql_* 函数自 PHP 5.5 起已弃用(并在 PHP 7 中完全删除),如果可以的话,您应该使用 stop using them。您应该选择其他 API,例如 mysqli_* 或 PDO - 请参阅 choosing an API。 检查 showUser 方法是否在选择框中更改值时被调用 哦,是的,当这一切正常时,我会改变它。我会用 mysqli 它会产生任何错误吗?在 PHP 中,检查 error_log(error_reporting(E_ALL);ini_set('display_errors', 1);)或 javascript(请参阅浏览器中的控制台)。 出现错误:[Error] TypeError: null is not an object (evaluating 'document.getElementById("txtHint").innerHTML = xmlhttp.responseText') onreadystatechange上线document.getElementById("txtHint").innerHTML = xmlhttp.responseText; 【参考方案1】:

我不明白 &lt;div class='tutorial_list'&gt;&lt;/div&gt;&lt;select&gt;&lt;/select&gt; 里面做什么

这个错误

[错误] ReferenceError:找不到变量:$(函数 匿名)prof.php:75

可能是因为几个原因。 a) jquery 库未正确加载 b) 路径可能不正确。检查这个link

我做了一些小改动,你可以试试这个。

<form>              
  <select id="choix" name="choix">
    <div class="tutorial_list">
      <?php 
      $db = mysql_connect('localhost', 'root', 'root'); 
      mysql_select_db('Projet',$db); 

      $sql = 'select NomPromo, NumPromo from Promo';
      $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

      while ($data = mysql_fetch_array($req))
           echo'<option value="'.$data['NumPromo'].'">'.$data['NomPromo'].'</option>';
      
      ?>
    </div>
  </select>
</form>

JS

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

<script>
  $(document).ready(function()
    $('#choix').change(function()
      var q= $('#choix').val();
      $.ajax(url:"data.php?q="+q,cache:false,success:function(result)
        $('#txtHint').html(result);
      );
    );
  );
</script>

[注意mysql_* 函数自 PHP 5.5 起已弃用。使用mysqli_*PDO]

【讨论】:

它不起作用有错误$('#choix').change(function()他找不到变量$ "[错误] ReferenceError: 找不到变量:$ (fonction anonyme)prof.php:75" 我已经更新了我的答案。请通过它@FlorianSL 你能为我做一件事吗?暂时在data.php页面。删除所有代码。只需&lt;?php echo "asd";?&gt; 看看会发生什么。你离它很近。 @FlorianSL 当我进入开发工具并按下 data.php 时,它告诉我有我想要打印的值。所以我的 data.php 工作,打印这个有错误

以上是关于Ajax、PHP 和 MySql的主要内容,如果未能解决你的问题,请参考以下文章

PHP走进 PHP 第六课 MySQL

使用php和ajax实现登录

基本 PHP 和 AJAX

学习笔记PHP和AJAX交互

AJAX 返回 PHP 和 head.php(页面源代码)

php AJAX和PHP