2016-12-20 2 views
0

Я создаю сайт простой регистрационной формы. Я отправляю данные через AJAX и не могу получить положительный или отрицательный ответ на запрос. Если я отправляю непосредственно в файл PHP, все работает, если использовать AJAX, AFTERSUCCESS ничего не делает. Я использую Jquery и JQUERYFORMSAjax не получил ответ после отправки POST на PHP

index.php:

<form class="uk-form" id="register_frm" action="php/register.php" method="POST" enctype="multipart/form-data"> 
    <input type="email" name="email" id="email" class="uk-width-1-1 uk-form-large" value="[email protected]"> 
    <input value="111" type="password" name="pass" id="pass" class="uk-width-1-1 uk-form-large" > 
    <input value="111" type="password" name="pass2" id="pass2" class="uk-width-1-1 uk-form-large"> 
    <button class="uk-button uk-button-primary uk-button-large uk-align-center" type="submit" name="submit_btn" id="submit_btn" value="reg">Register <i class="uk-icon uk-icon-spin uk-icon-spinner" id="output"></i></button> 
    <div id="output"></div> 
</form> 

Javascript:

$(document).ready(function() { 
    $("#register_frm").submit(function(event){ 
     var options = { 
      target: '#output', // target element(s) to be updated with server response 
      beforeSubmit: beforeSubmit, // pre-submit callback 
      success:  afterSuccess, // post-submit callback 
      uploadProgress: OnProgress, //upload progress callback 
      dataType : 'json', 
      resetForm: false  // reset the form after successful submit 
     }; 

     $('#register_frm').ajaxSubmit(options);    
     // always return false to prevent standard browser submit and page navigation 
     return false; 

     function afterSuccess(data) 
     { 
      console.log(data); 
     } 

     function beforeSubmit(){ 
     } 

     function OnProgress(event, position, total, percentComplete) 
     { 
      //Progress bar 
     } 

     function bytesToSize(bytes) { 
      var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; 
      if (bytes == 0) return '0 Bytes'; 
      var i = parseInt(Math.floor(Math.log(bytes)/Math.log(1024))); 
      return Math.round(bytes/Math.pow(1024, i), 2) + ' ' + sizes[i]; 
     } 
    }); 
}); 

PHP

if (isset($_POST['submit_btn'])&& $_POST['submit_btn']== 'reg') { 
    $data = array(); 
    $errors = array(); 

    $email=trim($_POST['email']); 
    $pass=trim($_POST['pass']); 
    $pass2=trim($_POST['pass2']); 

    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     $errors['email']="Invalid email"; 
    } 

    if (empty($pass) || empty($pass2)) { 
     $errors['pass']="Invalid passwords"; 
    } 

    if (strcmp($pass, $pass2)) { 
     $errors['pass']="Invalid passwords"; 
    } 

    if (empty($errors)) { 
     $add_user= add_new_user($conn,$email,$pass); 
    } 

    if ($add_user) { 
     $data['success'] = true; 
    } else { 
     $data['success'] = false; 
    } 

    echo json_encode($data); 
} 
+0

ли вы JQuery форма плагин включен?/ –

+0

да я использую v20131228 версию – allpnay

+0

Почему вы определяете методы после возвращения ложным? Они должны быть над ним ... – epascarello

ответ

0

Ну, я нашел проблему. Получение данных на PHP Я проверяю, нажата ли кнопка SUBMIT, и VALUE его. AJAX не отправляет кнопку, поэтому я добавил поле HIDDEN и проверяет, получил ли я правильную форму. Спасибо всем

<form class="uk-form" id="register_frm" action="php/register.php" method="POST" enctype="multipart/form-data"> 
<input type="email" name="email" id="email" class="uk-width-1-1 uk-form-large" value="[email protected]"> 
<input value="111" type="password" name="pass" id="pass" class="uk-width-1-1 uk-form-large" > 
<input value="111" type="password" name="pass2" id="pass2" class="uk-width-1-1 uk-form-large"> 
<input type="hidden" name="reg" id="reg"> 
<button class="uk-button uk-button-primary uk-button-large uk-align-center" type="submit" name="submit_btn" id="submit_btn" value="reg">Register <i class="uk-icon uk-icon-spin uk-icon-spinner" id="output"></i></button> 
<div id="output"></div> 

PHP

if (isset($_POST['reg'])) {} 
Смежные вопросы