php / ajax:表单get方法不起作用

时间:2014-02-21 12:44:34

标签: php ajax forms

我有两个php文件,test.php和test2.php
在'test.php'我有一个表单,我想获得名称并用ajax和php回显它这里是我的代码,它有什么问题?

test.php的

<html>
<head>
<script>
function showHint(str)
{
if (str.length==0)
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","test2.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>

<p><b>Start typing a name in the input field below:</b></p>
<form method="get">
First name: <input type="text" name="fname">
<input type="submit" value="click me" onclick="showHint(fname)">
</form>
<p>Suggestions: <span id="txtHint"></span></p>

</body>
</html>

test2.php

<?php
$q = intval($_GET['q']);
echo $q;
?>

1 个答案:

答案 0 :(得分:0)

表单中的按钮是提交输入,将导致重新加载页面。将return false添加到您的onclick方法以防止这种情况发生:

<input type="submit" value="click me" onclick="showHint(fname); return false">

此外,您的showHint函数需要一个字符串,但您正在传递HTML输入。您可以通过在函数顶部添加以下内容来获取文本值:

if (typeof str !== 'string' && typeof str.value !== 'undefined') {
    str = str.value;
}