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】:
我不明白 <div class='tutorial_list'></div>
在 <select></select>
里面做什么
这个错误
[错误] 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页面。删除所有代码。只需<?php echo "asd";?>
看看会发生什么。你离它很近。 @FlorianSL
当我进入开发工具并按下 data.php 时,它告诉我有我想要打印的值。所以我的 data.php 工作,打印这个有错误以上是关于Ajax、PHP 和 MySql的主要内容,如果未能解决你的问题,请参考以下文章