2013-07-27 1 views
0

Я хочу отобразить в #username_input в соответствии со значением, возвращаемым этим PHP-скриптом. Кажется, что условие if не работает.Отправить форму jquery на основе возвращаемых значений из php

JavaScript:

$(document).ready(function() { 
     $('#username_input').keyup(function() { 
      $.post('header/check_username.php', { 
        username: form.username.value 
       }, 
       function (result_username) { 
        if (result_username == 'a') { 

         $('#feedback_username').html('choose a username').show(); 
        } 
        if (result_username == 'b') { 
         $('#feedback_username').html('Too short').show(); 
        } 

       }); 
     }); 

HTML:

<form id="registeration_form" name="form" onsubmit="return hello()" > 
    <table> 
     <tr> 
      <td>Username </td> 
      <td><input type="text" id="username_input" name="username" autofucus/></td> 
      <td><span id="feedback_username"></span></td> 
      <br/><br/> 
     <tr> 
      <td>Password </td> 
      <td><input type="password" id="password_input" name="password"/></td> 
     </tr> 
     <br/><br/> 
     <tr> 
      <td>Confirm Password</td> 
      <td><input type="password" id="password_confirm" name="password_confirm"/></td> 
      <td><span id="feedback_password"></span></td> 
     </tr> 
     <br/><br/> 
     <tr> 
      <td>Email </td> 
      <td><input type="text" id= "email_input" name="email" /></td> 
     </tr> 
    </table> 
    <center><input type="submit" x value="Register"/></center> 
    <br/> 
    <div id= "onsubmit_feedback"></div> 
    <center><a href="javascript:register('hide');">close</a></center> 
</form> 

возвращает a, если имя пользователя пуст и b если имя пользователя меньше 6 символов.

PHP:

<?php 
$con = mysqli_connect("localhost:3306", "root", "", "project_new"); 
if (mysqli_connect_errno($con)) { 

    echo "Unsuccessful" . mysqli_connect_error(); 
    exit(); 
} 

@$username  = mysqli_real_escape_string($con, trim($_POST['username'])); 
$check   = mysqli_query($con, "select u from users where u ='$username'"); 
$check_num_rows = mysqli_num_rows($check); 

if ($username == NULL) 
    retutn 'a'; 
    //echo "choose a username"; 
else if (strlen($username) <= 5) 
    return 'b'; 
    //echo "Too Short. Minimum 6 characters"; 
else { 
    if ($check_num_rows == 0) 
     echo "Available :)"; 
    else if ($check_num_rows == 1) 
     echo "Not Available :("; 

} 

?> 
+0

Это имеет смысл. Отправьте имя пользователя на сервер с помощью ajax, и если он слишком короткий, появится сообщение об ошибке, и если оно достаточно длинное, отправьте форму с именем пользователя и перенаправлением. Должен быть более простой способ сделать это? – adeneo

+0

Это >>> 'retutn 'a';', typo? Должен читать как 'return 'a';'. Если это не опечатка, то измените ее, попробуйте еще раз, а затем вернитесь к своим результатам. –

+1

используйте 'echo' вместо' return', (т.е.: 'echo 'a';') – bystwn22

ответ

0

Две проблемы, которые я нашел (один уже упомянутый @fred в комментариях) в следующих двух строках:

if ($username==NULL) 
    retutn 'a'; 

Во-первых, ваш $username никогда не будет нулевым , mysqli_real_escape_string возвращает строку. Вторая строка retutn 'a', вероятно, опечатка, предложенная Фредом.

Попробуйте изменить эти строки:

if (empty($username)) 
    echo 'a'; 
0

Ваша проблема заключается в неправильной функции обратного вызова и строки PHP. После документации API jQuery функция обратного вызова при успешном запуске получает три параметра (data, textStatus, jqXHR).

Попробуйте это решение для файла PHP:

<?php 
$con = mysqli_connect("localhost:3306", "root", "", "project_new"); 
if (mysqli_connect_errno($con)) { 

    echo "Unsuccessful" . mysqli_connect_error(); 
    exit(); 
} 

$username  = mysqli_real_escape_string($con, trim($_POST['username'])); 
$check   = mysqli_query($con, "select u from users where u ='$username'"); 
$check_num_rows = mysqli_num_rows($check); 

if (empty($username)) { 
    echo 'a'; 
    //echo "choose a username"; 
} 
else if (strlen($username) <= 5) { 
    return 'b'; 
    //echo "Too Short. Minimum 6 characters"; 
} 
else { 
    if ($check_num_rows == 0) 
     echo "Available :)"; 
    else if ($check_num_rows == 1) 
     echo "Not Available :("; 

} 

?> 

И это для JavaScript:

$(document).ready(function() { 
    $('#username_input').keyup(function() { 
     $.post('header/check_username.php', { 
       username: form.username.value 
      }, 
      function (data, textStatus, jqXHR) { 
       if (data == 'a') { 

        $('#feedback_username').html('choose a username').show(); 
       } 
       if (data == 'b') { 
        $('#feedback_username').html('Too short').show(); 
       } 

      } 
     ); 
    }); 
}); 
+0

Возможно, вы захотите сделать скрытый div с именем пользователя и div для Too Short. Если вы wanne перевести его позже на другой язык, это можно сделать быстрее :) –

Смежные вопросы