2013-07-11 6 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> 

자바 스크립트 :

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의 :

,931,

정보를 전달하지 않으며 화면에 '테스트'만 작성하고 대신 'get'information(test.html?uname=)을 추가하여 HTML 페이지를 다시로드합니다. 이것은 폼을 시도한 후에 (즉, 페이지 이름에 'get' 정보가 추가 된) 앵커 태그에서 잘 작동합니다. 나는 기본적인 것을 놓치고 있다고 확신한다. 너 나 좀 도와 줄 수있어?

감사합니다.

P. 나는 jquery를 사용할 수 없다.

답변

1

브라우저가 양식 게시의 기본 조치를 실행하지 않도록하려면 주석 추가 기능에서 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

관련 문제