Как Ajax работает с PHP? - PullRequest
2 голосов
/ 09 мая 2011

У меня проблемы с использованием ajax и php.Я пытаюсь вызвать функцию ajax, которая получает значение из формы ввода и проверяет, существует ли это письмо в базе данных.Вот мой текущий javascript:

//Checks for Existing Email
function checkExisting_email() {
    $.ajax({
        type: 'POST',
        url: 'checkExist.php',
        data: input
    });

emailExists = checkExisting_email();

//If it exists
if (emailExists) {
    alert("This email already exists!");
}

К сожалению, я не могу отключить свое оповещение.В моей функции PHP он проверяет, является ли ввод имени пользователя или электронной почты (только для моих целей, и так вы знаете), а затем ищет его в любом столбце.Если он находит его, он возвращает истину, а если нет, он возвращает ложь:

include ('func_lib.php');
connect();
check($_POST['input']);

function check($args)
{
    $checkemail = "/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i";
    if (!preg_match($checkemail, $args)) {
        //logic for username argument
        $sql = "SELECT * FROM `users` WHERE `username`='" . $args . "'";
        $res = mysql_query($sql) or die(mysql_error());

        if (mysql_num_rows($res) > 0) {
            return true;
        } else {
            return false;
        }
    } else {
        //logic for email argument
        $sql = "SELECT * FROM `users` WHERE `email`='" . $args . "'";
        $res = mysql_query($sql) or die(mysql_error());

        if (mysql_num_rows($res) > 0) {
            return true;
        } else {
            return false;
        }
    }

}

ТАК, моя проблема в том, как ajax отвечает на эти возвращаемые данные и как мне соответствующим образом заставить функцию ajax?Главным образом, почему это не работает?

Любая помощь очень ценится.Спасибо!

Ответы [ 2 ]

1 голос
/ 09 мая 2011

По сути, ajax - это процедура рукопожатия с вашим сервером.

Ajax:

$.post('yoursite.com/pagewithfunction.php',
    {postkey1:postvalue1, postkey2:postvalue2...},
    function (response) {
       // response is the data echo'd by your server
    }, 'json'
);

pagewithfunction:

yourFunction(){
   $var1 = $_POST['postkey1'];....
   $result = dosomething($var1..);
   echo json_encode($result); // this is passed into your function(response) of ajax call
}

Таким образом, в $ .post у вас есть URL страницы php с функцией, {var: val} - это данные поста, а функция (ответ) - это то место, где вы обрабатываете данные, которые выводятся с вашего сервера - - переменная response - это содержимое, которое echo'd.

1 голос
/ 09 мая 2011

Вам необходимо добавить опцию success в ваш запрос Ajax, которая является функцией JS, которая выполняется при успешном выполнении XHR.Посмотрите документацию jQuery для получения дополнительной информации.

Без запуска скрипта, я думаю, вы обнаружите, что $_POST['input'] пусто;для этого вам нужно передать ваши данные как data: {'input': input}.

вашему PHP также необходимо вернуть некоторый контент в скрипт;рассмотрите возможность изменения вашего звонка на check() на что-то вроде этого:

echo (check($_POST) ? 'true' : 'false');

Теперь вы можете проверить содержимое в JavaScript.

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