2016-05-11 6 views
-1

検証が偽であれば、ajaxを使用してcodeigniterフォームの処理を変換しようとしましたが、現在の状態では常​​にエラーが発生します。以下のコードを参照して参照してください。Codeigniterは常にエラーメッセージを返す

PHP:

public function add() { 

    $post_data = $this->input->post('formdata'); 
    $data = array (
    'identity' => $post_data ['email'], 
    'password' => $post_data ['password'], 
    'email' => $post_data ['email'], 
    'group' => array($post_data['group_id']), 
    'additional_data' => array (
     'first_name' => $post_data['first_name'], 
     'last_name' => $post_data['last_name'], 
     'active' => $post_data['active'], 
     'date_registered' => date('Y/m/d h:i:sa') 
    ) 
    ); 

    // custom error message 
    $this->form_validation->set_message('alpha_dash_space', '%s appears to be invalid. Must contain only alphabets.'); 
    $this->form_validation->set_message('matches', '%s does not match the Confirm Password field. '); 


    if ($this->form_validation->run() == TRUE) { 
     $result['data'] = $this->ion_auth->register($data['identity'], $data['password'], $data['email'], $data['additional_data'], $data['group']); 

    } else { 
     $result['message'] = validation_errors(); 
    } 
    echo json_encode($result); 
} 

JS:

function submit_form (form_id) { 
    var url  = $(form_id).attr("action"); 
    var formData = {}; 
    $(form_id).find("input[name]").each(function (index, node) { 
    formData[node.name] = node.value; 
    }); 
    $(form_id).find('select[name]').each(function (index, node) { 
    formData[node.name] = node.value; 
    }); 
    $(form_id).find('textarea[name]').each(function (index, node) { 
    formData[node.name] = node.value; 
    }); 
    $.ajax({ 
    type: "POST", 
    data: { 
     'formdata': formData 
    }, 
    url: url, 
    dataType: 'json', 
    success: function(result) { 
     if (result.data) { 
     console.log(success); 
     swal({ 
     title: "Success!", 
     text: "You've done it great!", 
     type: "success" 
     }, 
     function(){ 
     location.reload(); 
     }); 
     } else { 
     $('#error-msg').html(result.message); 
     } 
    }, 

    error: function(data) { 
     swal({ 
     title: "Error!", 
     text: "Oops, something went wrong. Check and try again.", 
     type: "error" 
     }); 
    } 
    }); 
} 

注:フォームの検証は、configディレクトリに設定されています。フォームルールに問題はありません。私は条件を処理するjqueryを除いて、すべてが正常に動作しています。以下のような

+0

このコード – Arun

+0

@Arun、 'validation_errors()によって生成されたエラーを表示します;' – claudios

+0

を試してみてください、すべての値をINGのと – Arun

答えて

1

編集:

if ($this->form_validation->run() == FALSE) { 
     $result['message'] = validation_errors(); 
    } else { 
     $result['data'] = $this->ion_auth->register($data['identity'],   
     $data['password'], $data['email'], $data['additional_data'], 
     $data['group']); 
    } 

また、あなたがset_messageなくset_rulesを持っています。 form_validationライブラリを使用する場合は、いくつかのルールを設定する必要があります。

+0

こんにちは、私はあなたが何を意味するかを理解しますが、フォームのルールは私の設定内で設定されている検証ルールと比較エコーディレクトリをクリーンなコードにします。私は、検証ルールには何の問題もないことを繰り返す。主な問題はjqueryとajaxだと思います。 – claudios

+0

'console.log(formData);を' success:function(result){'に追加できますか? –

+0

それは私にオブジェクトを与え、私が入力したすべてのフィールドの値を含んでいます。私は 'if(result.data)'コードの中のすべてが動作しないことに気付きました。 – claudios

関連する問題