0

我正在尝试编写程序,它要求用户输入一些字母或字符串,并通过这个字符串,列出这些城市,这个字符串或字母是我有以下 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","USA.php="+str,true);
xmlhttp.send();
}
</script>

</head>
<body>
<h3>entering  any city names which you like  </h3>
<form action="USA.php" method="post" >
CITY :<input type="text" name="city" value=" " onkeyup="showHint(this.value)"></br>
<input type="submit" value="Submit"/>
</form>

<p>Suggestions: <span id="txtHint"></span></p> 
</body>
</html>

还有 USA.php 文件

<html>
<body>
<?php
$c=$_GET['city'];
$d=strlen($c);

$filename=file("UScities.txt");
$out=" ";
foreach ($filename as $line)
{

if (strtolower($c)==substr($line,0,$d)){
if($out=="")
{
$out=$line;
}
else
{
$out=$out. ' , ' . $line;
}
}
}
echo $out

?>
</body>
</html>

但是当我在Firefox中运行它时,它给了我以下错误

注意:未定义索引:第 4 行 C:\xampp\htdocs\united\USA.php 中的城市

但我无法理解这个错误,为什么城市未定义索引?编辑:

html code
<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", "USA.php?city="+str, true);
xmlhttp.send();
}
</script>

</head>
<body>
<h3>entering  any city names which you like  </h3>
<form action="USA.php" method="post" >
CITY :<input type="text" name="city" value=" " onkeyup="showHint(this.value)"></br>
<input type="submit" value="Submit"/>
</form>

<p>Suggestions: <span id="txtHint"></span></p> 
</body>
</html>

.php 文件

<html>
<body>
<?php
$c=$_POST['city'];
$d=strlen($c);

$filename=file("UScities.txt");
$out=" ";
foreach ($filename as $line)
{

if (strtolower($c)==substr($line,0,$d)){
if($out=="")
{
$out=$line;
}
else
{
$out=$out. ' , ' . $line;
}
}
}
echo $out

?>
</body>
</html>
4

2 回答 2

2

您在 JavaScript 中查询字符串是错误的。更改以下行:

xmlhttp.open("GET", "USA.php?city="+str, true);
于 2012-06-08T06:37:42.997 回答
2

这里试试这个:

xmlhttp.open("GET","USA.php?city="+str,true);

好的,这就是问题所在。您请求提示USA.php并且您也提交了您的表格USA.php。然而,在请求提示列表时,您使用了

xmlhttp.open("GET","USA.php?city="+str,true);

但是你形成了使用过的 post 方法

<form action="USA.php" method="post" >

问题出在USA.php你用过的帖子上

$c=$_POST['city'];

我建议你改变ff。

$c=$_POST['city'];=>$c=$_GET['city'];

<form action="USA.php" method="post" >=><form action="USA.php" method="get" >


最后编辑:将您的条件更改为我的朋友。和你的一切!

if (strtolower($c)==strtolower(substr($line,0,$d)))

于 2012-06-08T06:38:06.383 回答