2014-11-09 2 views
2

동일한 페이지에 데이터를 게시하려고합니다.

아약스의 게시물이 올바르게 작동하지만 의 $_POST이 양식 제출 후 소식을 찾지 못하는 것을 알 수 있습니다.

<form method="post" id="classic_login" action=""> 
    <input type="text" name="user" placeholder="Username" class="classic_field" id="user_field" /> 
    <input type="text" name="pass" placeholder="Password" class="classic_field" id="pass_field" /> 
    <input type="submit" name="login" value="Login" class="classic_button" id="login_button" /> 
    <input type="submit" name="register" value="Register" class="classic_button" id="register_button" /> 
</form> 

나는 내가 얻을 테스트 제출 후 제출 후

print_r($_POST); 
if(isset($_POST['user']) && isset($_POST['pass'])) 
    echo "works"; 

인쇄 formdata을 변경하지 마십시오 모두 print_r($_POST)isset 모두를 시도했다 : 사용자 = testuser를 & 패스 = testpass

$("#classic_login").submit(function(event) { 
    var formdata = $(this).serialize(); 
    event.preventDefault(); 

    $.ajax 
    ({ 
     url: "", 
     type: 'POST', 
     data: formdata, 
     //success: function(response) { alert(response); }, 
     error: function() { alert("fail"); } 
    }); 

}); 
+2

왜 당신이 당신의 성공 방법을 주석 : 그럼 PHP에서, 요청 후 exit; 포함되어 있습니까? –

+0

내 이해에 관한 한, 동일한 PHP 파일에 양식을 게시하려면 action = "your.php"를 사용하면됩니다. 그럼 왜 아약스를 사용하니? –

+0

@Abdul 이유가 없으며 방금 테스트했습니다. 주석 처리하는 것을 잊어 버렸습니다. – joe

답변

1

또는 document.URL을 사용하여 동일한 페이지에서 요청할 수 있습니다.

<?php 

if($_SERVER['REQUEST_METHOD'] == 'POST') { 
    echo '<pre>'; 
    print_r($_POST); 
    exit; // this is important! 
} 

?> 

<form method="post" id="classic_login" action=""> 
    <input type="text" name="user" placeholder="Username" class="classic_field" id="user_field" /> 
    <input type="text" name="pass" placeholder="Password" class="classic_field" id="pass_field" /> 
    <input type="submit" name="login" value="Login" class="classic_button" id="login_button" /> 
    <input type="submit" name="register" value="Register" class="classic_button" id="register_button" /> 
</form> 

<!-- this is no brainer, of course you need to load the library --> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script type="text/javascript"> 
$("#classic_login").submit(function(event) { 
    var formdata = $(this).serialize(); 
    event.preventDefault(); 

    $.ajax({ 
     url: document.URL, // you can use this 
     type: 'POST', 
     data: formdata, 
     success: function(response) { 
      alert(response); 
     } 
    }); 
}); 
</script> 

Sample Output

+0

js/main.js – joe

+0

@joe 물론,이 대답은 간단합니다. 어쨌든이 수정본은 큰 수정을 할 필요가 없습니다. 친절하게도이 것을 시도하십시오. – Ghost

+0

확인을 시도했지만 여전히 아무것도 아닙니다. print_r은 "Array()"를 실행하거나 변경하지 않습니다. – joe

관련 문제