三个页面:ajax.js / ajax.php / index.php
ajax.js/**
* 初始化一个xmlhttp对象
*/
function InitAjax()
{
 var ajax=false; 
 try { 
  ajax = new ActiveXObject("Msxml2.XMLHTTP"); 
 } catch (e) { 
  try { 
   ajax = new ActiveXObject("Microsoft.XMLHTTP"); 
  } catch (E) { 
   ajax = false; 
  } 
 }
 if (!ajax && typeof XMLHttpRequest!='undefined') { 
  ajax = new XMLHttpRequest(); 
 } 
 return ajax;
}
///////////////////////////////////////////
function showHint()
{
 //获取接受返回信息层
 var msg = document.getElementById("txtHint"); //获取表单对象和用户信息值
 var f = document.userlogin;
 var UserName = f.UserName.value;
 var UserAge = f.UserAge.value; //接收表单的URL地址
 var url = "/ajax.php"; //需要POST的值,把每个变量都通过&来联接
 var postStr = "&user_name="+ UserName +"&user_age="+ UserAge; //实例化Ajax
 var ajax = InitAjax();
 
 //通过Post方式打开连接
 ajax.open("POST", url, true);  //定义传输的文件HTTP头信息
 ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");  //发送POST数据
 ajax.send(postStr); //获取执行状态
 ajax.onreadystatechange = function() { 
  //如果执行状态成功,那么就把返回信息写到指定的层里
  if (ajax.readyState == 4 && ajax.status == 200) { 
   msg.innerHTML = ajax.responseText; 
  } 
 } 
}ajax.php <?php
//require("class.php");
$UserName=$_post['user_name'];
$UserAge=$_post['user_age'];
//$cd=new controldata();
//$cd->update(&$UserName,&$UserAge,&$con);
$hint=$UserName.$UserAge;
if ($hint == "")
{
$response="no suggestion";
}
else
{
$response=$hint;
}//output the response
echo $response;?>index.php<link rel="stylesheet" type="text/css" href="css.css" />
<script src="ajax.js"></script>
<?php
echo "<form method=post name=userlogin id=userlogin>UserName:<select name=UserName id=UserName><option value=aaa>aaa</option><option value=bbb>bbb</option></select>UserAge:<input type=text name=UserAge id=UserAge><input type=submit value=提交 onclick='showHint()'></form>";
echo "<div id=txtHint style='width:200px; height:30px; background:#ccc;'></div>";
?>
问题是点击index.php的提交按钮,在txtHint的地方只显示一下就马上又刷新了,是怎么回事?
谁有更好的ajax异步思路,望不吝赐教!

解决方案 »

  1.   

    type=submit,表单提交了,,,就是说页面刷新了<form……onsubmit="return showHint();"showHint()  要返回false
      

  2.   

    谢谢~!
    哪位还有更好的ajax异步思路啊
      

  3.   

    index.php<link rel="stylesheet" type="text/css" href="css.css" />
    <script src="ajax.js"></script>
    <?php
    echo <<< HTML
    <form method=post name=userlogin id=userlogin>
    UserName:<select name=UserName id=UserName>
    <option value=aaa>aaa</option>
    <option value=bbb>bbb</option>
    </select>
    UserAge:<input type=text name=UserAge id=UserAge>
    <input type=button value=提交 onclick='showHint()'>
    </form>
    HTML;
    echo "<div id=txtHint style='width:200px; height:30px; background:#ccc;'></div>";
    ?>使用 ajax 时,说是“提交”,其实并没有提交按钮
      

  4.   

    恩。谢谢1#和3#的,就是这个问题,已经解决了。
    哪位还有更好的ajax异步思路。
      

  5.   

    麻烦再看一下ajax.js页面,传值好像传不过去。
      

  6.   

    ff和ie都过不去还是其中一个过不去?
      

  7.   

    我也出现这个问题了,而且ajax我还不怎么会,我是下载的代码
    学习了
      

  8.   

    我没有ff,我用的是ie,过不去,是什么原因啊?
      

  9.   

    虽然你用的是.php页来实现网页功能,id和name后面好歹也要加‘’,select的option的value=''也要加引号的
      

  10.   

    好像不是这的问题啊,我已经改过并检查了。可还是不行。估计问题是不是处在ajax.js上面啊???