ajax.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
function GetXmlHttpObject()
{
var XMLHttp=null;
try
{
XMLHttp=new XMLHttpRequest();
}
catch(e)
{
try
{
XMLHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
XMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return XMLHttp;
}


function submit_form(tag)
{
XMLHttp=GetXmlHttpObject();
var aurl="deal_ajax.php?tag="+tag+"&url="+document.getElementById("url").value+"";
XMLHttp.open("GET",aurl,true);
XMLHttp.send(null);
XMLHttp.onreadystatechange=function()
{
if(XMLHttp.readyState==4&&XMLHttp.status==200)
{
document.getElementById("status").innerHTML=XMLHttp.responseText;
}
}
}
</script>
</head><body>
<div align="center" style="text-align:center">
<form action="" method="post">
<table width="900" border="1">
  <tr>
    <td>url</td>
    <td><input name="url" type="text"  style="width:400px" id="url"/></td>
  </tr>
  <tr>
    <td>message</td>
    <td><textarea name="message" cols="" rows="" id="message"></textarea></td>
  </tr>
  <tr>
    <td><input name="save" type="submit" value="保存"  id="save" onclick="submit_form('later')"/></td>
    <td><input name="fabu" type="submit" value="发布"  id="fabu" onclick=""/></td>
  </tr>
</table></form>
<div id="status"></div>
</div>
</body>
</html>deal_ajax.php<?php
echo "#######@".$_REQUEST['url'];
?>
点击“保存”按钮可以异步提交到deal_ajax.php,但是马上就走form的action了!!!!用post也是

解决方案 »

  1.   

     <td><input name="save" type="button" value="保存"  id="save" onclick="submit_form('later')"/></td>
        <td><input name="fabu" type="button" value="发布"  id="fabu" onclick=""/></td>
      

  2.   

     type="submit" 改成
    type="button"
      

  3.   

    onclick="submit_form('later');return false"
      

  4.   

    如果我把deal_ajax.php 
    改成echo "<script>alert('添加成功');window.location='test2.php';</script>";
    就不输出了,但我想给一个弹窗的提示,然后跳转。
      

  5.   

    可以的
    如果我把deal_ajax.php 
    改成echo "<script>alert('添加成功');window.location='test2.php';</script>";
    就不输出了,但我想给一个弹窗的提示,然后跳转。
      

  6.   

    改了ok了
    如果我把deal_ajax.php 
    改成echo "<script>alert('添加成功');window.location='test2.php';</script>";
    就不输出了,但我想给一个弹窗的提示,然后跳转。
      

  7.   

                if(XMLHttp.readyState==4&&XMLHttp.status==200)
                {
    alert(……)//在这里弹窗
                    document.getElementById("status").innerHTML=XMLHttp.responseText;
                }
      

  8.   

    你是这样接收返回值的
    document.getElementById("status").innerHTML=XMLHttp.responseText;向 innerHTML 赋值时,其中的 js 脚本是不会被执行的
    返回的 js 脚本必须做特殊处理再者说,如果这样跳转的话,就失去 ajax 的意义了
    ajax 的作用就在于在一个页面中完成各种各样的操作,以获得良好的用户体验像你这样还需要跳转的话,就不如直接表单提交了
      

  9.   


    echo "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />" .
    "<script type='text/javascript' language='javascript'>".
    "if(confirm('ok')){" .
    " window.location.href='{$href}';" .
    "} else{
    history.back();
    }" .
    "</script>";
    exit;
      

  10.   

    我也知道这样做回失去ajax的意义,但是我的页面中有一个下拉菜单,如果之间提交表单,下拉菜单选错了,返回那原信息就没有了。如果异步判断下拉菜单,菜单一开始的选项就是用户想选的,那他既没有获得焦点,也没有失去焦点,也没有点击,我又如何异步判断呢?
      

  11.   

    如你所说,每当下拉菜单被选中会触发 onchange 事件,这时就应该产生 ajax 动作,如果用户发现选错了,自然会纠正,而再次产生ajax动作。当然你可以在服务器端作出判断而返回相关的错误信息来提醒用户
    当引入 ajax 后,浏览器就相当于一个桌面程序。一切都将包容在一个界面之中
    你什么时候在玩游戏时,发现由于你的操作错误而出现多个游戏画面呢?