Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.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
AJAX HTML PHP问题_Php_Html_Ajax - Fatal编程技术网

AJAX HTML PHP问题

AJAX HTML PHP问题,php,html,ajax,Php,Html,Ajax,这是我的scripts.js 依此类推,取决于您使用的浏览器,onkeypress事件也会在不改变内容的按键上触发,如箭头键、回车键或制表键、F5刷新键等。。。对于某些浏览器,甚至按下shift键都可能触发按键。有关详细信息,请参阅 由于PHP代码没有检查输入的值是否为新值,因此每次按下其中一个键时,它都会添加输入的值 此外,使用jQuery进行此操作也是一个好主意。onkeypress将为每个按键触发,即使您在该框中执行此操作。下面是发生的情况: 你输入“j” showHint()被触发,将“

这是我的scripts.js


依此类推,取决于您使用的浏览器,
onkeypress
事件也会在不改变内容的按键上触发,如箭头键、回车键或制表键、F5刷新键等。。。对于某些浏览器,甚至按下shift键都可能触发按键。有关详细信息,请参阅

由于PHP代码没有检查输入的值是否为新值,因此每次按下其中一个键时,它都会添加输入的值


此外,使用jQuery进行此操作也是一个好主意。

onkeypress将为每个按键触发,即使您在该框中执行此操作。下面是发生的情况:

  • 你输入“j”
  • showHint()被触发,将“j”发送到服务器
  • 脚本将“j”插入到用户表中
  • 您键入“o”,文本字段中现在有“jo”
  • showHint()被触发,将“jo”发送到服务器
  • 脚本将“jo”插入到用户表中
  • 等等
  • 换句话说,您根本没有显示任何提示,只是盲目地将用户键入的内容插入数据库

    如果您想显示提示,那么您应该至少执行一个“选择”查询,并将结果返回到页面

    您还应该使用类似或的东西来进行AJAX调用。他们将为您处理构建/发送请求的困难部分,而不必担心用户使用的浏览器

    同样,在向野外发布像你这样的脚本之前,先阅读一下

    您还有一个格式错误的insert查询。要插入新记录,基本语法为:

    INSERT INTO sometable (field1, field2, field3, ...) VALUES (value1, value2, value3, ...)
    
    这里混合了某种部分“更新”查询,其格式为

    UPDATE sometable SET field1=value1, field2=value2, ....
    
    我看不出你的查询怎么能像现在这样将任何东西插入数据库,因为语法完全被破坏了

    function sendRequest(str) {
     var xhttp = new XMLHttpRequest();
     xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById("txtHint").innerHTML = this.responseText;
       }
     };
     xhttp.open("GET", "inputProcess.php?q="+str, true);
     xhttp.send();
    }
    
    function showHint(str) {
     if (str.length==0) { 
      document.getElementById("txtHint").innerHTML="";
      return;
     } else {
     sendRequest(str)
     }
    }
    

    我知道你想做什么,请使用标准方法…你代码中唯一的问题实际上是onkeypress。当您确定用户已经完全输入了单词并且不再输入时,您需要调用请求。我认为在JS中这不是一件很容易的事。当然可以,但您必须花费大量的工时来完成。

    我很困惑-到底是什么问题?我不知道问题是什么,但我建议您尝试使用jQuery开始AJAX。。。有许多函数使它变得轻而易举,并且从零开始就去掉了所有涉及到的高级编码。检查一下:如果这是您的PHP文件的范围,那么您会遇到一些主要的安全问题,因为您根本没有验证您的输入。任何人都可以很容易地侵入你的数据库。问题是数据被多次保存到数据库中,而不是一次。问题是:当我在文本框中输入(只有一个值)时。然后它将保存在我的数据库中。我输入的文本是“Jordan”。当我检查我的数据库时,它会出现:userid1,J.userid2,Jo。用户标识3 Jor。关于INSERT vs UPDATE语法,MySQL实际上支持多个,如图所示
    userid 1 J
    userid 2 Jo
    userid 3 Jor
    
    INSERT INTO sometable (field1, field2, field3, ...) VALUES (value1, value2, value3, ...)
    
    UPDATE sometable SET field1=value1, field2=value2, ....
    
    function sendRequest(str) {
     var xhttp = new XMLHttpRequest();
     xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById("txtHint").innerHTML = this.responseText;
       }
     };
     xhttp.open("GET", "inputProcess.php?q="+str, true);
     xhttp.send();
    }
    
    function showHint(str) {
     if (str.length==0) { 
      document.getElementById("txtHint").innerHTML="";
      return;
     } else {
     sendRequest(str)
     }
    }