函数调用不返回控件AJAX - PHP - MYSQLI

时间:2018-04-29 16:05:39

标签: javascript php html ajax mysqli

我已经检查了所有类似的问题,但没有发现任何有帮助的东西......所以这里有!

我正在为我的大学项目设计一个网站。它只是一个图像库。我为每个图像显示一个计数器,每次单击图像时都会增加。页面刷新时,将显示新号码。和我一起到目前为止?

问题是数据库更新完成后,返回没有完成剩下的代码...

echo "<div class='gridImg'><a href=".$imgpath." data-lightbox='countryside' data-title='".$row['ldesc']."' onclick='"."showUser(&#39".$fname."&#39)'>";

以上行是在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;
    }
}

上面的脚本获取传递的值并将其移交给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);
?>

上面的php文件更新了数据库。

好的...

因此,用户点击屏幕上的其中一个图片,打开一个灯箱图库,但也会更新视图计数然后返回控件 - 除了一切正常 - 更新发生 - 但灯箱无法启动相反,显示了单击的一个静态大图像。清除它的唯一方法是刷新站点,这反映了更新的计数器。

我已经向onclick函数调用添加了返回,该函数调用返回控件,但计数器未更新。我哪里错了?请记住,我仍然在学习,我希望这是有道理的:)

2 个答案:

答案 0 :(得分:0)

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();
  };
}

答案 1 :(得分:0)

好的,在玩了@ apaatsio的答案后,我得到了它,这就是现在的功能......

syntax error, insert ";" to complete Statement
String literal is not properly closed by a double-quote

at UsingActionsClass.UsingActions.main(UsingActions.java:23)

看起来阻止点击打开链接工作正常 - 谢谢:)