2013-07-11 32 views
1

我查了各種解釋與表單使用Ajax,並已剝離整個程序,只是得到形式與php交談,但它是不合理的固執...AJAX窗體只能重新加載頁面

形式:

<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'信息添加到頁面名稱)。我相信我錯過了一些基本的東西。你可以幫我嗎?

謝謝。

P.S.我無法使用jquery。

回答

1

您需要從add comment函數返回false來告訴瀏覽器不要執行發佈表單的默認操作。目前發生的事情是瀏覽器正在執行你的功能,然後立即提交表單給xmlhttprequest沒時間執行。

+0

是的,那是我忘記的荒謬的事情。謝謝。它缺少這樣的事情,最終花費我的時間幾個小時。傷心... – user1874309

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> 
+0

謝謝,我知道返回false,但我並不知道preventDefault()。我會查找它。 – user1874309