0

フォーム送信をしようとしています。フォームを送信する前に、jquery 検証プラグインを使用して入力を検証します。検証が完了したら、jquery で ajax リクエストをコントローラーのコントローラー関数に送信します。データベースに挿入されて表示された値を確認できるので、入力の挿入は成功しています。ただし、コールバックはエラーを返します。フィールドの 1 つを空のままにしてみましたが、実際には成功のコールバックが返されます。

私の検証スクリプトは次のとおりです

  $("#registerHere").validate({
    rules:{
        user_name:"required",
        user_email:{
            required:true,
            email: true
        },
        pwd:{
            required:true,
            minlength: 6
        },
        cpwd:{
            required:true,
            equalTo: "#pwd"
        },
        role:"required"
    },
    messages:{
        user_name:"Enter your first and last name",
        user_email:{
            required:"Enter your email address",
            email:"Enter valid email address"
        },
        pwd:{
            required:"Enter your password",
            minlength:"Password must be minimum 6 characters"
        },
        cpwd:{
            required:"Enter confirm password",
            equalTo:"Password and Confirm Password must match"
        },
        role:"Select Role"
    },
    errorClass: "help-inline",
    errorElement: "span",
    highlight:function(element, errorClass, validClass) {
        $(element).parents('.control-group').addClass('error');
    },
    unhighlight: function(element, errorClass, validClass) {
        $(element).parents('.control-group').removeClass('error');
        $(element).parents('.control-group').addClass('success');
    },
});

私のjquery ajax postメソッドは次のとおりです

 $('#register').click(function(){ 
    //alert('register k');

    var user_name = $('#registerHere').find('#user_name').val();

    var user_password = $('#registerHere').find('#pwd').val();

    var user_email = $('#registerHere').find('#user_email').val();

    var user_role = $('#registerHere').find('#role option:selected').val();

    //if(user_name =="" || user_password==""||user_email==""||user_role=="")
        //return;

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

    $.ajax({
        type: "POST",
        dataType:"json",
        url:"login_register/register_controller_function",
        data: post_data,
        success: function(data) {
                alert(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown)
        {
            alert(textStatus);

        }
    });


});

私のコントローラースクリプト

    public function register_controller_function()
{
    $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_model_function($user_name,$user_password,$user_email,$user_role);
    echo json_encode($result);
}

ここで、register_model_function はデータベースへの値の挿入を行います。

デバッガーを使用してリクエストを確認すると、わずかに異なります。

成功のコールバックがあるフィールドを空のままにしておくと、リクエストヘッダーは次のようになります

Request    URL:http://127.0.0.1/mathplication_v2/login_register/register_controller_function
Request Method:POST
Status Code:200 OK

POST /mathplication_v2/login_register HTTP/1.1

Host: 127.0.0.1

Connection: keep-alive

Content-Length: 72

Cache-Control: max-age=0

Origin: http://127.0.0.1

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5

Content-Type: application/x-www-form-urlencoded

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Referer: http://127.0.0.1/mathplication_v2/login_register

Accept-Encoding: gzip,deflate,sdch

Accept-Language: en-US,en;q=0.8

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

エラー コールバックが発生するフィールドに入力すると、リクエスト ヘッダーは次のようになります。

Request URL:http://127.0.0.1/mathplication_v2/login_register
Request Method:POST
Status Code:200 OK

POST /mathplication_v2/login_register HTTP/1.1

Host: 127.0.0.1

Connection: keep-alive

Content-Length: 72

Cache-Control: max-age=0

Origin: http://127.0.0.1

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5

Content-Type: application/x-www-form-urlencoded

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Referer: http://127.0.0.1/mathplication_v2/login_register

Accept-Encoding: gzip,deflate,sdch

Accept-Language: en-US,en;q=0.8

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

リクエストの URL は異なりますが、私の jquery での ajax リクエストでは、コントローラーの URL を既に指定しています。

何が間違っているのですか?

4

0 に答える 0