0

ajaxを使用して小さなフォーム検証を行っています。ユーザーがキーを提供し、フォームが送信されると、ajax メソッドの validate_key を呼び出します。

私の機能は

function validate_key(){
    $key = $_POST['key'];
    $id = $this->uri->segment(3);
    $query = $this->db->get_where('mc_boxes', array('idmc_boxes' => $id));
    $row = $query->row();
    $download_key = strtolower($row->downloadkey);
    if($download_key == $key){
        return true;
    }
    else{
        return false;
    }
}

JQueryは

$(document).ready(function() {
    $('#submit').click(function() {
        var key = $('#downloadkey').val();
        var dataString = {KEY:key};
        $.ajax({
            url: "/index.php/home/validate_key",
            type: 'POST',
            data: dataString,
            success: function(msg) {
            }
        });
        return false;
    });
});

フォームは次のとおりです

<form name="form" method="post"> 
   <input id="downloadkey" name="downloadkey" type="text" />
   <input type="submit" id="submit" name="submit" value="submit"/>
</form>

キーが正しい場合、ユーザーがデータベースに提供したキーを確認します。キーが間違っている場合、ユーザーがページを表示し、セッションでキーを設定できるようにします。警告メッセージを表示し、フォームを再度レンダリングします。

応答を確認するにはどうすればよいですか?

ありがとう

4

2 に答える 2

3

PHPページからエコーする必要があると思います

if($download_key == $key){
        echo "true";
    }
    else{
        echo "false";
    }

次に、Ajaxサクセスハンドラーで、コールバックの応答を確認できます。preventDefault()ページが投稿されないように関数を呼び出して、デフォルトのアクションも防止していることを確認し てください。

$(document).ready(function() {
    $('#submit').click(function(e) {
       e.preventDefault();
        var key = $('#downloadkey').val();
        var dataString = {KEY:key};
        $.ajax({
            url: "/index.php/home/validate_key",
            type: 'POST',
            data: dataString,
            success: function(msg) {
                  if(msg=="true") 
                    {
                       alert("do something")
                    }
                    else
                    {
                       alert("do something else")
                    }                        

            }
        });           
    });
});
于 2012-08-06T13:57:07.400 に答える
0

You need to output something to the page. If you just return true or return false nothing will get output.

So do something like:

echo "OK"

and then you can do this in your javascript:

if(msg == "OK"){ .. }

The other thing you can do is return a HTTP status code e.g.

header("HTTP/1.1 200 OK");

You can check this in your jquery. Using the first method however is more useful because you can have any number of outputs on the page, including different error messages and such.

于 2012-08-06T13:58:26.290 に答える