Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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 如何在html中显示ajax_Javascript_Php_Html_Ajax - Fatal编程技术网

Javascript 如何在html中显示ajax

Javascript 如何在html中显示ajax,javascript,php,html,ajax,Javascript,Php,Html,Ajax,下面的示例来自,我使用一个php文件发回与数组中的单词相关的建议。我想在html中显示它们,但当我在php文件周围放置段落标记时,整个数组被打印到屏幕上,而不是所选的单词,请帮助我编写javascript代码,表单如下 <script> function showHint(str) { var xmlhttp; if (str.length==0) { document.getElementById("txtHint").innerHTML=""; retu

下面的示例来自,我使用一个php文件发回与数组中的单词相关的建议。我想在html中显示它们,但当我在php文件周围放置段落标记时,整个数组被打印到屏幕上,而不是所选的单词,请帮助我编写javascript代码,表单如下

      <script>
function showHint(str)
{
var xmlhttp;
if (str.length==0)
  { 
  document.getElementById("txtHint").innerHTML="";
  return ;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  };
xmlhttp.open("GET","gethint.php",true);
xmlhttp.send();
}
</script>   
我的PHP文件是

<?PHP

 // Fill up array with names
 $a[]="Anna";
 $a[]="Brittany";
 $a[]="Cinderella";
 $a[]="Diana";
 $a[]="Eva";
 $a[]="Fiona";
 $a[]="Gunda";
 $a[]="Hege";
 $a[]="Inga";
 $a[]="Johanna";
 $a[]="Kitty";
 $a[]="Linda";
 $a[]="Nina";
 $a[]="Ophelia";
 $a[]="Petunia";
 $a[]="Amanda";
 $a[]="Raquel";
 $a[]="Cindy";
 $a[]="Doris";
 $a[]="Eve";
 $a[]="Evita";
 $a[]="Sunniva";
 $a[]="Tove";
 $a[]="Unni";
 $a[]="Violet";
 $a[]="Liza";
 $a[]="Elizabeth";
 $a[]="Ellen";
 $a[]="Wenche";
 $a[]="Vicky";
 // get the q parameter from URL
$q=$_REQUEST["q"]; 
$hint="";

// lookup all hints from array if $q is different from "" 
if ($q !== "")
  { $q=strtolower($q); $len=strlen($q);
    foreach($a as $name)
    { if (stristr($q, substr($name,0,$len)))
      { if ($hint==="")
       { $hint=$name; } 
        else
        { $hint .= ", $name"; }
      }
    }
  }

// Output "no suggestion" if no hint were found
// or output the correct values 
 echo $hint==="" ? "no suggestion" : $hint;
 ?>

看起来您根本没有通过ajax将qget参数传递给php脚本

xmlhttp.open("GET","gethint.php",true);
应该是

xmlhttp.open("GET","gethint.php?q="+str,true);

检查你的副本是否与我的相同。工作副本: 这一个对我来说没有问题,我测试了php和html的隔离和运行

===============================
HTML FILE
===============================
<!DOCTYPE html>
<html>
    <head>
        <script>
            function showHint(str)
            {
                var xmlhttp;
                if (str.length == 0)
                {
                    document.getElementById("txtHint").innerHTML = "";
                    return;
                }
                if (window.XMLHttpRequest)
                {// code for IE7+, Firefox, Chrome, Opera, Safari
                    xmlhttp = new XMLHttpRequest();
                }
                else
                {// code for IE6, IE5
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                xmlhttp.onreadystatechange = function ()
                {
                    if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
                    {
                        document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
                    }
                }
                xmlhttp.open("GET", "hints.php?q=" + str, true);
                xmlhttp.send();
            }
        </script>
    </head>
    <body>

        <h3>Start typing a name in the input field below:</h3>
        <form action=""> 
            First name: <input type="text" id="txt1" onkeyup="showHint(this.value)" />
        </form>
        <p>Suggestions: <span id="txtHint"></span></p> 

    </body>
</html>
=================================================================================================================
PHP hints.php
=================================================================================================================
<?php
$a[]="Anna";
$a[]="Brittany";
$a[]="Cinderella";
$a[]="Diana";
$a[]="Eva";
$a[]="Fiona";
$a[]="Gunda";
$a[]="Hege";
$a[]="Inga";
$a[]="Johanna";
$a[]="Kitty";
$a[]="Linda";
$a[]="Nina";
$a[]="Ophelia";
$a[]="Petunia";
$a[]="Amanda";
$a[]="Raquel";
$a[]="Cindy";
$a[]="Doris";
$a[]="Eve";
$a[]="Evita";
$a[]="Sunniva";
$a[]="Tove";
$a[]="Unni";
$a[]="Violet";
$a[]="Liza";
$a[]="Elizabeth";
$a[]="Ellen";
$a[]="Wenche";
$a[]="Vicky";
$q = isset($_REQUEST['q']) ? $_REQUEST['q'] : '';
$hint = '';
if ($q !== '') {
    $q = strtolower($q);
    $len = strlen($q);
    foreach ($a as $name) {
        if (stristr($q, substr($name, 0, $len))) {
            if ($hint === '') {
                $hint = $name;
            } else {
                $hint .= ", $name";
            }
        }
    }
}

echo ($hint === "") ? "no suggestion" : $hint;
?>
另外,如果您在netbeans中运行它,请确保您安装了php,并在项目视图中单击鼠标右键单击项目名称后检查此配置

这些段落标记到底在哪里?我把它们放在整个php文件中只是为了看看它会做什么,但我知道这是错误的,响应中实际返回的是什么?也就是说,xmlhttp.onreadystatechange函数中xmlhttp.responseText的值是多少?id=txtHint的元素是什么?该元素中没有设置内容吗?所以您只需在整个PHP代码周围添加段落?不知道为什么那不起作用!抱歉,我是新手,但当我在firefox中使用firebug时,整个文件都会在responcenow中返回,它正在传递q元素。我如何让它以html显示?并尝试通过执行提示来运行文件。php?q=a您是否遇到异常或其他情况?如果没有,则添加echo“echo工作正常”;最后。需要明确的是:line document.getElementByIdtxtHint.innerHTML=xmlhttp.responseText;将所有输出都输出到html,因此不要在php周围放置标记,从而破坏您的php: