1

我已经查找了将 ajax 与表单一起使用的各种解释,并将整个程序剥离为只是让表单与 php 对话,但它是不合理的固执......

表格:

<form method="get" action="">
Name:<input type="text" name="uname" id="uname"><br>';
<input type="submit" onclick="addcomment()" value="Post">
</form> 
<a href="" onclick="addcomment()">Test</a>

的JavaScript:

function addcomment()
    {

         if (window.XMLHttpRequest)
                { xmlhttp=new XMLHttpRequest();}
            else
                { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}

            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    document.write(xmlhttp.responseText);
                    }
                   }
        xmlhttp.open("GET","test.php",true);
        xmlhttp.send();
    }

PHP:

<?php
echo 'test';
?>

它不传递任何信息,并且应该只在屏幕上写“测试”,而是重新加载 html 页面,添加'get' information(test.html?uname=). 这可以从锚标记正常工作,除非我在尝试表单后尝试它(即,将'get'信息添加到页面名称)。我确定我缺少一些基本的东西。你能帮助我吗?

谢谢你。

PS我不能使用jquery。

4

2 回答 2

1

您需要阻止浏览器将表单提交到页面。这是由returning false脚本完成的。例子:

<form method="get" action="" onsubmit="addcomment(); return false;">
    Name: <input type="text" name="uname" id="uname"><br>
    <input type="submit" value="Post" />
</form> 
于 2013-07-11T08:30:17.107 回答
1

您需要从添加评论功能返回 false 以告诉浏览器不要执行发布表单的默认操作。目前发生的是浏览器正在执行您的功能,然后立即提交表单,让 xmlhttprequest 没有时间执行。

于 2013-07-11T08:30:02.950 回答