Первый раз в AJAX, не понимаю некоторые строки кодов - PullRequest
3 голосов
/ 09 июня 2011

Я новичок в программировании и впервые изучаю AJAX на PHP.Я получил рабочий пример кода из Интернета и изучаю его, но есть некоторые коды, которые я не понимаю, и я действительно расстроен.

В index.php я так запутался в коде xmlhttp.open("GET","gethint.php?q="+str,true);.Я не знаю, что означает q.Насколько я понимаю, q должно обозначать html-элемент с именем q.Например, у меня есть <input type="text" name="q" />, тогда я знаю, что у меня есть имя текстового поля q.Но в этом примере я не могу найти ни одного элемента с именем q.Просьба помочь ...

index.php

<html>
 <head>
  <script type="text/javascript">
   function showHint(str)
   {
    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?q="+str,true);
   xmlhttp.send();
  }
 </script>
</head>
<body>

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

</body>
</html>

gethint.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=$_GET["q"];

 //lookup all hints from array if length of q>0
 if (strlen($q) > 0)
 {
  $hint="";
  for($i=0; $i<count($a); $i++)
  {
   if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
  {
    if ($hint=="")
    {
     $hint=$a[$i];
    }
    else
    {
     $hint=$hint." , ".$a[$i];
    }
   }
  }
 }

// Set output to "no suggestion" if no hint were found
// or to the correct values
if ($hint == "")
 {
  $response="no suggestion";
 }
 else
 {
  $response=$hint;
 }

 //output the response
echo $response;
?>

Ответы [ 3 ]

4 голосов
/ 09 июня 2011

В вашем примере q - это параметр, который передается в gethint.php со значением, содержащимся в переменной str.

Переменная получает свое значение из входного элемента «Имя»всякий раз, когда клавиша нажимается и отпускается (событие onkeyup).

Затем к значению q в файле PHP можно получить доступ с помощью строки $q=$_GET["q"];.

.Назовите параметры, передаваемые на страницу PHP, как вам угодно, они не должны соответствовать элементам HTML.

1 голос
/ 09 июня 2011

это как параметр URL, который похож на

PHP

gethint.php?q=mYstring

echo $_GET['q'];// output as mYstring

В js,

var str ='mYstring';
"gethint.php?q="+str

echo $_GET['q'];// output as mYstring

Я думаю, что вы можете получить, если возникнут какие-либо проблемы. (Делай это всегда)

1 голос
/ 09 июня 2011

q - имя параметра запроса HTTP GET:

Hypertext_Transfer_Protocol # Request_methods

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...