1

ユーザー登録機能を実行するために ajax を使用しています。私はajaxを使用してユーザー情報をコントローラーに送信し、コントローラーはその情報をモデルに渡してデータベースに挿入します。

データベースにエントリが表示されたので、挿入は正常に行われました。ただし、私の ajax リクエストでは、常にエラーが返されます。

私が注目したのは、フィールドの 1 つを空のままにすると、成功が返されるということです。

以下の私のajaxスクリプト

var post_data = 
    {
        'username':user_name,
        'password':user_password,
        'email':user_email,
        'role':user_role
    };


    $.ajax({
        type: "POST",
        dataType: "json",
        url:"login_register/register_data",
        data: post_data,
        success: function(data) {
                alert('Insertion of user ok');
        },
        error: function(data)
        {
            alert('Insertion of user error ' + data.responseText);
        }
    });

私のコントローラーコード

public function register_data()
{
    $this->load->database();
    $this->load->model('login_model');

    $user_name=$this->input->post('username');
    $user_password=$this->input->post('password');
    $user_email=$this->input->post('email');
    $user_role=$this->input->post('role');

    $result = $this->login_model->register_data_model($user_name,$user_password,$user_email,$user_role);

    //if($result)
        echo "true";
    //else echo "false";
}

私のモデルコード

public function register_data_model($user_name,$user_password,$user_email,$user_role)
{
    $result = $this->db->query("INSERT INTO user_table (user_name,user_password,user_email,user_role) VALUES (".$this->db->escape($user_name).",".$this->db->escape($user_password).",".$this->db->escape($user_email).",".$this->db->escape($user_role).")");
}

モデルとコントローラーから何も返さなくても、このように動作します。何が起こっているのか誰にも分かりますか?

4

4 に答える 4

0

ネットワークヘッダーをチェックして、サイトが500などをスローしていないことを確認します。

于 2012-06-21T19:16:01.153 に答える
0

post_data が正しいとは思わない...これを試してください:

$.ajax({
    type: "POST",
    dataType: "json",
    url:"login_register/register_data",
    data: {user_name:'username', user_password:'password',user_email:'email',user_role:'role'},
    success: function(data) {
            alert('Insertion of user ok');
    },
    error: function(data)
    {
        alert('Insertion of user error ' + data.responseText);
    }
});

これには、コントローラーで新しいキーを取得する必要があります。つまり、

$user_name=$this->input->post('user_name');
于 2012-06-20T19:12:36.527 に答える
0

これを試して:

var post_data = 
{
     username:user_name,
     password:user_password,
     email:user_email,
     role :user_role
};
于 2012-06-20T19:56:42.933 に答える
0

id は、単なる true ではなく、実際の json 形式のデータを返すことを提案しています。

次の行に沿ったもの:

[{"successfull":"yes" }]

PHPヘッダーをアプリケーションタイプjsonに設定します。

次に、JavaScriptで成功関数でテストできます

if(data[0]["successfull"].indexOf("yes") != -1)
    {
    dosomething()
    }
于 2012-06-20T20:07:46.157 に答える