Как получить данные из эхо-кода PHP для отображения с помощью AJAX? - PullRequest
1 голос
/ 23 мая 2011

Проще говоря: как получить данные из эхо-кода PHP для отображения с помощью AJAX?

У меня есть возможность использовать JQuery;однако, я не знаю, будет ли это правильно для работы или нет.У меня просто есть форма в HTML, в которую пользователь может вводить информацию, но, поскольку они вводят данные, я хочу проверить их доступность для базы данных.Если ввод проверен и проблем нет, я не хочу отображать текст, но если есть проблема, то я хочу отобразить ошибку.В настоящее время у меня есть форма регистрации, работающая с PHP и MySQL через базу данных, но я не могу получить сообщения об ошибках без обновления страницы.Есть ли способ показать ошибки без обновления?

HTML:

<form action="index.php" method="POST">
            <table>
                <tr>
                    <td colspan="3"><h1>New to the site?</h1></td>
                </tr>
                <tr>
                    <td><span class="login_text">Username:</span></td>
                    <td><input type="text" class="inputs" name="signup_username" value="<?php echo $username ?>"></td>
                </tr>
                <tr>
                    <td><span class="login_text">Password:</span></td>
                    <td><input type="password" class="inputs" name="signup_password"></td>
                </tr>
                <tr>
                    <td><span class="login_text">Password <span style="color: #666666;">(repeat)</span>:</span></td>
                    <td><input type="password" class="inputs" name="signup_passwordrepeat"></td>
                </tr>
                <tr>
                    <td><span class="login_text">Email:</span></td>
                    <td><input type="text" class="inputs" name="signup_email" value="<?php echo $email ?>"></td>
                </tr>
                <tr>
                    <td colspan="2"><input type="submit" id="signupbutton" class="subutton" style="font-family: Georgia, sans-serif;  font-size: 1.5em;  width: 265px;  height: 3em;" value="Sign Up!" name="signup_button"></td>
                </tr>
            </table>
        </form>

PHP:

<?php
            $submit = $_POST["signup_button"];
            $username = mysql_real_escape_string($_POST["signup_username"]);
            $password = mysql_real_escape_string($_POST["signup_password"]);
            $repeatpassword = mysql_real_escape_string($_POST["signup_passwordrepeat"]);
            $email = mysql_real_escape_string($_POST["signup_email"]);
            $date = date(m.d.y);

            if($submit) {  //If the form is submitted
                if($username && $password && $repeatpassword && $email) {  //If everything is filled out
                    //Check length of username
                    if(strlen($username) <= 16) {
                        $usercheck = mysql_query("SELECT * FROM artists WHERE username='$username'");
                        $usernum = mysql_num_rows($usercheck);

                        if($usernum == 0) {  //Check for availability of username
                            $emailcheck = mysql_query("SELECT * FROM artists WHERE email='$email'");
                            $emailnum = mysql_num_rows($emailcheck);

                            if($emailnum == 0) {  //Check for availability of email address
                                if($password == $repeatpassword) {  //Check for identical password input
                                    //Encrypt password
                                    $password = sha1($password);
                                    $repeatpassword = sha1($repeatpassword);

                                    //REGISTER
                                    $register = mysql_query("INSERT INTO artists VALUES ('', '', '$username', '$password', '$email', '', '$date')");
                                    echo("Registration successful, please log in on the right!");
                                }
                                else
                                    echo("The passwords don't match!");
                            }
                            else
                                echo("That email address has already been registered!");
                        }
                        else
                            echo("That username has already been registered!");
                    }
                    else
                        echo("The username you entered is too long!");
                }
                else
                    echo("Please fill out all fields!");
            }
        ?>

Ответы [ 2 ]

2 голосов
/ 03 июня 2011

поместите сообщение, которое вы хотите отобразить в json, например,

<?php echo json_encode(array('message_you_want' => 'your message here'));?>

затем установите dataType в вашем вызове ajax на json, например

dataType : 'json'

и затем в функции успеха для вашего ajax вы можете передать объект json, например, через

$.ajax({
 dataType: 'json',
 url : 'url',
 data : {/*data here*/},
 success: function(j)
 {
  //access your message like this
  alert(j.message)
 }
});

Это также плохая практика, чтобы вкладывать ваши операторы if. Вы должны посмотреть на это

надеюсь, что это помогло

2 голосов
/ 23 мая 2011

Плагин jQuery для проверки является стандартной системой проверки для jQuery и обеспечивает поддержку проверки на основе AJAX (где он отправляет данные обратно на сервер для проверки и отображает сообщение для вас в случае сбоя).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...