2

ユーザーが入力した名前がデータベースにすでに存在するかどうかを確認しようとしています。そのためにAJAXを使用しています。ただし、名前が実際にデータベースに存在する場合、trueが返されることはありません(DBに名前が存在するかどうかはわかります)。正しくやっているかどうか知りたいだけです。

これは私のテキストフィールドです:

<input type="text" name="name" id="name"/>
                <div id='check'></div>

これは$.postリクエストです:

<script>
$(document).ready(function() {

$('#name').keyup(function(){
    isAvailable();

});

function isAvailable()
{
    var name = $('#name').val();

    $.post("controller/check", { name: name },
        function(result)
        {
            if(result == 1)
            {
                $('#check').html('It is available.');
            }
            else
            {
                $('#check').html('It's not available.');
            }

        });
}

});

これは、コントローラーで呼び出される関数です。

public function check()
{
    $name = $this->input->post('name');
    return $this->model->check_title();
}

これがモデルです:

function check_title()
{
    $this->db->select('name');
    $this->db->from('products');
    $this->db->where('name', $this->input->post('name'));
    $result = $this->db->get();

    $rows = $result->num_rows();
    if($rows > 0)
    {
        return 0;
    }
    else
    {
        return 1;
    }
}

私は問題が何であるかを知っていると思います、それは$nameおそらくコントローラーのが認識されていないということですか?または、渡されるデータが$.post何らかの理由で正しくない、つまり、キーがデータベースのフィールド名であると想定されているということですか?本当に混乱していて、助けていただければ幸いです。

4

1 に答える 1

2

コントローラ関数からの値を実際にエコーする必要があります。コントローラ関数の戻り値は使用されません。

于 2013-03-07T00:11:29.310 に答える