javascript - 函数调用不返回控制 AJAX - PHP - MYSQLI
问题描述
我已经检查了所有与此类似的问题,但没有发现任何有帮助的东西……所以就这样吧!
我正在为我的大学项目设计一个网站。它只是一个图片库。我为每个图像显示一个计数器,每次单击图像时都会递增。当页面刷新时,将显示新号码。跟我到现在?
问题是数据库更新完成后返回没有完成其余的代码......
echo "<div class='gridImg'><a href=".$imgpath." data-lightbox='countryside' data-title='".$row['ldesc']."' onclick='"."showUser('".$fname."')'>";
上面的行在一个 php 文件中,有问题的函数是 showUser,它传递了一个变量 $fname...
function showUser(str) {
if (str === "") {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
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();
return;
}
}
上面的脚本获取传递的值并将其交给 countryupdateviews.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);
?>
上面的 php 文件更新数据库。
行...
因此,用户单击屏幕上的其中一个图像,这将打开一个灯箱画廊,但也会更新查看次数,然后返回控制权 - 除了一切正常 - 更新发生 - 但灯箱没有启动,而是显示了被点击的那个的静态大图。清除它的唯一方法是刷新站点,这确实反映了更新的计数器。
我已将返回添加到确实返回控制但计数器未更新的 onclick 函数调用。我哪里错了?请记住,我仍在学习,我希望这是有道理的:)
解决方案
to 的参数onclick
必须是一个函数。showUser("foo")
不是函数。您还缺少event.preventDefault()
阻止点击操作打开链接的信息。
改变你showUser
的
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();
};
}
推荐阅读
- bpmn.io - 如何搭建BPMN.io开发环境?
- vhdl - GHDL:在库 WORK 中找不到实体
- python - 如何使用 boto3 下载该文件夹中的所有内容
- python - 数据采集和处理架构
- c# - 为什么我可以看到提供延迟执行 (LINQ) 的操作的结果?
- react-native - 使用 RealmDB React Native 推送通知
- java - Android - 执行 AsyncTask 线程的问题
- php - Livewire/Alpine Dom 模板未更新
- reactjs - 使用缩放后 Highstock 返回平移
- swift - 停止在 Swift 中收听 NSEvent