Javascript 函数调用不返回控件AJAX-PHP-MYSQLI
我已经检查了所有类似的问题,但没有发现任何有帮助的。。。好了 我正在为我的大学项目设计一个网站。它只是一个图像库。我为每个图像显示了一个计数器,每次单击图像时该计数器都会递增。当页面刷新时,将显示新编号。到目前为止和我在一起 问题是,在数据库更新完成后,返回并没有完成其余的代码Javascript 函数调用不返回控件AJAX-PHP-MYSQLI,javascript,php,html,ajax,mysqli,Javascript,Php,Html,Ajax,Mysqli,我已经检查了所有类似的问题,但没有发现任何有帮助的。。。好了 我正在为我的大学项目设计一个网站。它只是一个图像库。我为每个图像显示了一个计数器,每次单击图像时该计数器都会递增。当页面刷新时,将显示新编号。到目前为止和我在一起 问题是,在数据库更新完成后,返回并没有完成其余的代码 echo "<div class='gridImg'><a href=".$imgpath." data-lightbox='countryside' data-title='".$row['ldesc
echo "<div class='gridImg'><a href=".$imgpath." data-lightbox='countryside' data-title='".$row['ldesc']."' onclick='"."showUser('".$fname."')'>";
上面的脚本接受传递的值并将其交给countrysideupdateviews.php(很抱歉,如果这个脚本一团糟,我是AJAX新手,从W3Schools站点获取它
<?php
$q = $_GET['q'];
$conn=new mysqli('localhost','user','pass','dbname');
$sql="UPDATE countryside SET views = views + 1 WHERE fname = '".$q."'";
$result=$conn->query($sql);
mysqli_close($conn);
?>
onclick的参数必须是函数。showUser(“foo”)
不是函数。您还缺少阻止单击操作打开链接的event.preventDefault()
将您的showUser
更改为
好的,在玩了@apaatsio的答案之后,我让它工作了,这就是函数现在的样子
function showUser(str) {
if (str === "") {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","../php/countrysideupdateviews.php?q="+str,true);
xmlhttp.send();
event.preventDefault();
}
}
看起来阻止点击打开链接效果不错-谢谢:)您的代码容易受到攻击。您应该通过或驱动程序将准备好的语句与绑定参数一起使用。有一些很好的例子。谢谢你的编辑。卢卡,我很感激你说的话,我也意识到了这一点——但目前我只希望代码能够正常工作。它不会在实时环境中使用,只是在测试服务器上使用。请记住,这只是为了我的大学学习而不是别的。我已经在@apaatsio上做了更改,虽然lightbox代码现在可以工作了,但数据库没有更新:(我认为错误应该在更新数据库的php文件中,因为我知道它可以工作。困惑。
function showUser(str) {
return function(event) {
if (str === "") {
document.getElementById("txtHint").innerHTML = "";
} else {
if (window.XMLHttpRequest) {
var xmlhttp = new XMLHttpRequest();
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","../php/countrysideupdateviews.php?q="+str,true);
xmlhttp.send();
}
event.preventDefault();
};
}
function showUser(str) {
if (str === "") {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","../php/countrysideupdateviews.php?q="+str,true);
xmlhttp.send();
event.preventDefault();
}
}