1

私は JQuery/JS 初心者で、単純な .blur() イベント呼び出しに問題があります。

基本的に、データベース内のフォームの入力要素に入力されたものの存在を検証するためにphpスクリプトを呼び出すことになっている「id = 'validate'」を持つ入力を持つhtmlフォームがあります。

どんな助けでも大歓迎です!

現時点では、「SyntaxError: missing : after property id @ line 6」[at 'alert("Called!!"),'] というエラーが表示されますが、コメントアウトしても何も起こりません。

HTML:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src='../js/validate.js'></script>
<!DOCTYPE html>
<html>
...
<body>
...  
<form method="POST" action="upload.php?t=0" class="formbox" style="float:left;" name='aform'>
    <label>Category: </label><input type="text" id='validate' maxlength="30" name="category"/><br />

    <input style="margin-left:35%;width:130px;" type="submit" value="Submit Article" />                     
</form>
...
</body>
</html>

検証.js:

$(document).ready(function(){
    $('#validate').blur(function(){
        $.ajax({

                type: "POST",
                url: "../php/validate.php",
                data: aform.elements["category"].value,
                success: function(msg){
                    alert("Category exists!");
                },
                error: function(){
                    alert("Error!");
                }

         });
    });
});

validate.php:

<?php
    include '../php/db.php';
    echo "Called!";

    $cat = mysqli_real_escape_string($con, $_POST['category']);

    $query = mysqli_query($con, "SELECT DISTINCT * FROM Category WHERE Name='".$cat."';");

    if(mysqli_num_rows($query) == 1){
        echo "Category Exists!";
    }else if(mysqli_num_rows($query) == 0){
        echo "No Category with that name found!";
    }else{
        echo "Too many Categories found!";
    }
?>

前もって感謝します!

EDIT:将来の参考のために、私はPOSTデータを参照するのに問題がありました. = "category"]').value,' を js ファイルで使用し、php ファイルで "$_POST['cat']" を参照する

4

3 に答える 3

0

私が気付いたいくつかのことは、alert関数呼び出しを ajax 呼び出しのオプション オブジェクト内に配置しないでください - ajax 呼び出しは、そのオプションが次のように定義されることを期待していますkey : value pairs- ajax 関数が呼び出されたというアラートを設定したい場合は、beforeSendXmlHttpRequest が送信される前に発生するコールバック内に配置します。コードは次のようになります。

$(document).ready(function(){
$('#validate').blur(function(){
    $.ajax({

            beforeSend: function() { alert("Called!!"); },
            type: "POST",
            url: "../php/validate.php",
            data: aform.elements["category"].value,
            success: function(msg){
                alert("Category exists!");
            },
            error: function(){
                alert("Error!");
            }

     });
});
});

また、補足として、html 要素の id プロパティはそのドキュメントに固有である必要があるため、ページ上の複数のフォーム入力で id="validate" を使用している場合、ページは有効な html ではありません - セレクターを変更してみてください代わりにクラス名に変更し、ぼかし関数を次のように呼び出します$('.validate').blur(function() ...

また、成功のコールバックは、XmlHttpRequest が完了したことを意味するだけで、サーバーから返されたデータは示されません。そのため、リクエストが完了したためにカテゴリが存在することを警告すると、誤検知が発生する可能性があります。より良いアプローチは、alert(msg)成功のコールバック内で使用します。

$.ajaxのクエリ ドキュメントへのリンクは次のとおりです。

于 2013-10-03T13:07:45.277 に答える
0

あなたのコードでは、

alert("Called!!"),

見当違いです。

削除してください。

$.ajax()関数はキーと値のペアのみを想定しています。

そしてalert関数です。

入れたり、機能させsuccessたりできerrorます。

于 2013-10-03T13:00:27.270 に答える