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 に答える