2013-05-16 5 views
0

success이 전혀 트리거되지 않으며 그 이유를 알 수 없습니다. AJAX 파일에 지정된 경고가 나타나지 않습니다.jQuery Ajax - 성공하지 못했습니다. 내 AJAX 호출에서

형태 :

<form onsubmit="check_reg();return false;" method="post" name="reg_form" id="reg"> 
    <label class="error" id="reg_error"></label> 
    <label for="login_reg">Login</label> 
    <input type="text" name="login" id="login_reg" placeholder="Login"> 
    <label for="email_reg">Email</label> 
    <input type="text" name="email" id="email_reg" placeholder="Email"> 
    <label for="haslo_reg">Password</label> 
    <input type="password" name="password" id="pass_reg" placeholder="Password"> 
    <button type="submit">Register</button> 
</form> 

reg_script.php :

if (!empty($_POST['login']) && !empty($_POST['password']) && !empty($_POST['email'])) { 
    $login = $mysqli->real_escape_string($_POST['login']); 
    $password = $mysqli->real_escape_string($_POST['password']); 
    $email = $mysqli->real_escape_string($_POST['email']); 

    if ($mysqli->query("INSERT INTO users (login, password, email) VALUES('$login', '$password', '$email')")) { 
     echo "ok"; 
    } 
    else { 
     echo "error"; 
    } 
} 
else { 
    echo "empty"; 
} 

AJAX

function check_reg() { 
    $.ajax({ 
     url: 'reg_script.php', 
     type: "POST", 
     data: "login=" + $('#login_reg').val() + "&password=" + $('#pass_reg').val() + "&email=" + $('#email_reg').val(), 
     success: function(result) { 
      if (result == 'ok') { 
       alert('ok'); 
      } 
      else if (result == 'error') { 
       alert('error'); 
      } 
      else if (result == 'empty') { 
       alert('empty'); 
      } 
     }, 
    }); 
} 

문제가 무엇인지 어떤 아이디어?

편집 : 나는이 튜토리얼을 http://developertips.net/post/display/web/3/dynamic-login-form-with-ajax-php/으로 사용하고 로그인 양식이 잘 작동되도록 추가해야한다고 덧붙였습니다. 단지 등록 양식 일뿐입니다.

+0

나는 어쩌면 생각이 있어야한다 result.responseText 경우 클라이언트 에코 ​​컨텐츠 타입에 아무것도 에코 전에 확인/빈/오류 –

+0

을 검사 할 때 : text/html. firebug/chrome 개발자 툴이나 피 들러를 사용하여 요청/응답이 어떻게 보이는지 확인 했습니까? 이것은 서버로 전송 된 내용과 서버가 요청을 처리 한 방법에 대해 많이 알 수 있습니다. – scrappedcola

+0

'error'가 실행됩니까? –

답변

0

로 변경

<form onsubmit="check_reg();return false;" method="post" name="reg_form" id="reg"> 
<label class="error" id="reg_error"></label> 
<label for="login_reg">Login</label> 
<input type="text" name="login" id="login_reg" placeholder="Login"> 
<label for="email_reg">Email</label> 
<input type="text" name="email" id="email_reg" placeholder="Email"> 
<label for="haslo_reg">Password</label> 
<input type="password" name="password" id="pass_reg" placeholder="Password"> 
<button type="submit">Register</button> 
</form> 

:

<form> 
<label class="error" id="reg_error"></label> 
<label for="login_reg">Login</label> 
<input type="text" name="login" id="login_reg" placeholder="Login"> 
<label for="email_reg">Email</label> 
<input type="text" name="email" id="email_reg" placeholder="Email"> 
<label for="haslo_reg">Password</label> 
<input type="password" name="password" id="pass_reg" placeholder="Password"> 
<input type="button" onclick="check_reg()">Register</button> 
</form> 

그런 식으로, HTML 파일은 다음의 PHP 파일을 호출하여 check_reg()를 호출합니다. HTML 파일에는 method = post 등의 작업이 필요 없습니다. 이 모든 정보는 이미 귀하의 기능에 포함되어 있습니다.

check_reg() 함수의 데이터 속성을 Btw 대신 serializeArray()로 변경하는 것이 좋습니다. 난 그냥 실현

한 가지 더 :

success: function(result) { 

결과 변수는 오류 메시지가 서버 쪽 (PHP)를 형성 포함되어 있습니다. 그래서 당신이해야 할 일은 다음과 같습니다 :

success: function(result) { 
      alert(result); 
+0

Bah, 이전에 스크립트에'alert (result)'줄을 추가해야한다고 생각했습니다. 값 'ok'와 'empty'는'request'에 올바르게 할당되어있는 것으로 나타났습니다. 그렇다면 왜'if' 트리거가 발생하지 않습니까? – user1170027

+0

Im은 확실하지 않지만 'ok'는 작은 따옴표로, 결과는 'ok'(큰 따옴표)로 나타 내기 때문에 가능합니다. –

+0

큰 따옴표를 변경하려고했으나 그 중 하나가 아닙니다. – user1170027

0

여기서 POST 요청을 사용하고 있지만 GET 요청에 사용 된 것처럼 쿼리 문자열로 데이터를 보냅니다. 객체의 형태로

사용 데이터 : 당신이 볼 수 있도록

data: {'login': $('#login_reg').val() ,'password':$('#pass_reg').val() ,'email':$('#email_reg').val()} 

또한 데이터 게시 여부, 당신의 PHP 파일에 print_r($_POST)으로 확인할 수 있습니다.

그래서 아약스에서 follwing을 코드를 사용

function check_reg() { 
    $.ajax({ 
     url: 'reg_script.php', 
     type: "POST", 
     data: {'login': $('#login_reg').val() ,'password':$('#pass_reg').val() ,'email':$('#email_reg').val()}, 
     success: function(result) { 
      if (result == 'ok') { 
       alert('ok'); 
      } 
      else if (result == 'error') { 
       alert('error'); 
      } 
      else if (result == 'empty') { 
       alert('empty'); 
      } 
     }, 
    }); 
} 
+0

데이터가 게시됩니다. 데이터베이스에 사용자를 추가 할 수 있습니다. 나는'data' 옵션을 변경하려고 시도했지만, 전혀 도움이되지는 않는다. 또한 GET 쿼리 문자열을 사용하여 로그인 양식에서 POST 요청을 사용 했으므로 문제가 없는지 잘 모르겠습니다. – user1170027

관련 문제