Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数调用不返回控件AJAX-PHP-MYSQLI_Javascript_Php_Html_Ajax_Mysqli - Fatal编程技术网

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(&#39".$fname."&#39)'>";
上面的脚本接受传递的值并将其交给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();
  }
}