2016-07-19 2 views
0

jQuery와 PHP를 사용하는 간단한 가입 페이지에서 AJAX를 사용하고 있습니다.PHP에서 AJAX 요청에 대한 응답 없음

<script> 
    function submitForm(){ 
     var data1=$('#regform').serialize(); 
     $.ajax({ 
     type:'POST', 
     url:'signup.php', 
     data:data1, 
     success: function(response){ 
      console.log(response); 
      if(response==1) 
      alert('taken'); 
      else if(response==2) 
       alert('registered'); 
       else 
       alert(response); 
     } 
     }); 
    } 
    </script> 

및 호출에 응답하는 PHP 스크립트 :

signup.php :

<?php 
require_once 'dbconnect.php'; 
if($_POST) { 
    $user_name = $_POST['user_name']; 
    $user_email = $_POST['user_email']; 
    $user_password = $_POST['password']; 
    try { 
     $sth = $dbh->prepare("SELECT * FROM logindata WHERE email=:email"); 
     $sth->execute(array(":email"=>$user_email)); 
     $count = $sth->rowCount(); 
     if($count==0){  
      $sth = $dbh->prepare("INSERT INTO logindata(username,email,pass) VALUES(:uname, :email, :pass)"); 
      $sth->bindParam(":uname",$user_name); 
      $sth->bindParam(":email",$user_email); 
      $sth->bindParam(":pass",$user_password); 
      if(!$sth->execute()) { 
       echo "3"; 
      } else { 
       echo "2"; 
      } 
     } else{  
     echo "1"; 
     }  
    } 
    catch(PDOException $e){ 
     echo $e->getMessage(); 
    } 
} 
?> 

PDO를 사용하여 여기에

는 아약스 전화를 만들기위한 스크립트입니다.

<?php 
    $dbhost='localhost'; 
    $dbuser='root'; 
    $dbpass=''; 
    $dbname='ambitio'; 
    try{ 
    $dbh=new PDO("mysql:host={$dbhost};dbname={$dbname}",$dbuser,$dbpass); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 
    } 
    catch(PDOException $e){ 
    echo $e->getMessage(); 
    } 
?> 

문제점 :

dbconnect.php

두 반응 중 어느 것도 JQuery와 Ajax 호출로 복귀하고있다. console.log()으로 확인했지만 브라우저에 아무것도 표시되지 않습니다. 데이터가 MySQL 데이터베이스에 저장되면 (확인) PHP에서 execute()이 정상적으로 작동하지만 브라우저에는 경고가 표시되지 않습니다. count0 인 경우 1이 반환됩니다.

또한 양식을 실제로 제출하지 않고 양식을 새로 고치면 브라우저 콘솔에 POST 412 (Precondition Failed) 오류가 나타납니다.

편집 : 게시 한 전체 php.

EDIT2 : 아파치 액세스 로그

::1 - - [19/Jul/2016:23:51:55 +0530] "GET /ambitio/css/bootstrap.css HTTP/1.1" 304 - "http://localhost/ambitio/signup.html" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" 
::1 - - [19/Jul/2016:23:51:55 +0530] "GET /ambitio/css/overboot.css HTTP/1.1" 304 - "http://localhost/ambitio/signup.html" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" 
::1 - - [19/Jul/2016:23:51:55 +0530] "GET /ambitio/css/font-awesome.css HTTP/1.1" 304 - "http://localhost/ambitio/signup.html" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" 
::1 - - [19/Jul/2016:23:51:55 +0530] "GET /ambitio/js/jquery.js HTTP/1.1" 304 - "http://localhost/ambitio/signup.html" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" 
::1 - - [19/Jul/2016:23:51:55 +0530] "GET /ambitio/js/bootstrap.js HTTP/1.1" 304 - "http://localhost/ambitio/signup.html" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" 
::1 - - [20/Jul/2016:00:43:36 +0530] "GET /ambitio/signup.html HTTP/1.1" 200 1454 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" 
::1 - - [20/Jul/2016:00:43:46 +0530] "POST /ambitio/signup.html HTTP/1.1" 200 1454 "http://localhost/ambitio/signup.html" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" 
::1 - - [20/Jul/2016:00:43:46 +0530] "POST /ambitio/signup.php HTTP/1.1" 200 1 "http://localhost/ambitio/signup.html" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" 

EDIT3 : 양식 HTML 마크 업 : 당신의 양식에 보내고에 URL을 포함하지 않기 때문에

에게
<form method="post" id="regform" onSubmit="submitForm()"> 
     <input type="text" placeholder="Username" id="user_name" name="user_name" /> 
     <input type="email" placeholder="Email" id="user_email" name="user_email" /> 
     <input type="password" placeholder="Password" id="password" name="password" /> 
     <input type="password" placeholder="Retype password" id="rpassword" name="rpassword" /> 
     <input type="submit" id="submit"/> 
</form> 
+0

모든 PHP 코드 – 0x13a

+0

return false을 추가? – msantos

+0

@ 0x13a가 질문을 업데이트했습니다. –

답변

1

onSubmit -Handler (submitForm) 아무튼 false을 반환하면 양식은 실제로 브라우저에 의해 현재 페이지에 게시되고 (양식의 POST 데이터를 처리 할 수 ​​없을 가능성이 높음) 로그인 페이지가 포함 된 페이지를 다시로드합니다.

POST가 아약스 스크립트 ()에도 전송되지만 브라우저는 이미 이동했기 때문에 응답을 기다리지 않습니다.

제출 프로세스에 대한 자세한 내용은 https://html.spec.whatwg.org/multipage/forms.html#concept-form-submit을 참조하십시오.

솔루션에 수 중 하나 그것은 asynchoronous 호출되지 않습니다 게시하여 submitForm 기능이나 onSubmit 핸들러 (;return false)

+0

이 문제를 해결했습니다. 정보를 제공해 주셔서 감사합니다. 당신이 제공 한 링크에서 많은 것을 배웠습니다. –

관련 문제