2016-07-18 7 views
0

GET 요청과 완벽하게 작동하는 AJAX 예제를 구현하려고하지만 POST를 통해 전송할 수 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까 ? PHP가받은 POST 객체는 항상 비어 있습니다. 어떤 조언을 주셔서 감사합니다!Ajax Post 대 GET

HTML & 자바 스크립트 :

<html> 
    <head> 
     <title> Create a new user</title> 
     <meta charset="UTF-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
     <script> 

      function checkUser(){ 
       xhttp = new XMLHttpRequest(); 
       xhttp.open("POST","usercheck.php",true); 

           xhttp.onreadystatechange = function() { 
            if (xhttp.readyState == 4 && xhttp.status == 200) { 
             var data = xhttp.responseText; 
             alert("Benutzer" + data); 
            } 
           } 
           xhttp.send("username=" + encodeURIComponent(document.getElementById("username").value)); 
          } 

     </script> 
    </head> 
    <body> 
     <p>User:</p><br> 
     <input type="text" id="username" name="username"> 
     <button onclick="checkUser();"> Check </button> 
    </body> 
</html> 

PHP 코드 :

<?php 

$usernames = array("admin", "gast", "paul"); 
$validate_pattern = "/^[a-z0-9]{4,20}$/"; 

if (!isset($_POST["username"])) { 
    die("{valid:false,message:false}"); 
} 

if (in_array($_POST["username"], $usernames)) { 
    die("{valid:false,message:'Username is used!'}"); 
} 

if (!preg_match($validate_pattern, $_POST["username"])) { 
    die("{valid:false,message:'Username wrong.'}"); 
} 
echo "{valid:true,message:false}"; 


?> 
+0

[레이블을 사랑하는 법을 배우십시오] (http://www.456bereastreet.com/archive/200711/use_the_label_element_to_make_your_html_forms_accessible/) – Quentin

+0

결과 에코가 올바른 JSON 형식을 반환하는지 확인하십시오. – Fallenreaper

+0

@Fallenreaper : 여기에는 JSON이 없으며 어쨌든 밀접하지 않습니다. – dandavis

답변

0

나는 코드에서 버그를 발견했다. 튜토리얼에 포함되지 않은 요청 헤더를 설정하는 데 불편을 겪었습니다. xhttp.setRequestHeader ('Content-Type', 'x-www-form-urlencoded');