2

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関数では、入力がユーザー名か電子メールかをチェックし(私の目的のためだけで、ご存知のとおり)、どちらかの列でそれを探します。見つかった場合はtrueを返し、見つからなかった場合はfalseを返します。

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を機能させるにはどうすればよいのかということです。主に、なぜこれが機能しないのですか?

どんな助けでも大歓迎です。ありがとうございました!

4

2 に答える 2

1

Ajaxリクエストにオプションを追加する必要がありsuccessます。これは、XHRが成功したときに実行されるJS関数です。詳細については、jQueryのドキュメントをご覧ください。

$_POST['input']スクリプトを実行しないと、それが空であることがわかると思います。あなたはそれをするようなものとしてあなたのデータを渡す必要がありますdata: {'input': input}

PHPは、一部のコンテンツをスクリプトに返す必要もあります。呼び出しをcheck()次のようなものに変更することを検討してください。

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

JavaScriptでコンテンツを確認できるようになりました。

于 2011-05-08T20:45:45.867 に答える
1

基本的に、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には、関数を含むphpページのURLがあります。{var:val}は投稿データであり、function(response)は、サーバーからエコーされたデータを処理する場所です。 、responseは、エコーされるコンテンツです。

于 2011-05-08T22:43:09.167 に答える