0

これを返されるJSONデータとしてifステートメントを実行する方法を理解しようとしています。エラーが発生した場合は、ユーザー名またはパスワードの入力にエラーがあるかどうかを確認し、エラーのクラスが実際のエラーであるラベルを追加する必要があります。したがって、以下のifステートメントは、データエラーがユーザー名であるかどうかを確認し、エラーではなくエラーに配置する必要があります。

{"output_status":"Error","output_title":"Form Not Validated","output_message":"The form did not validate successfully!","error_messages":{"username":"This is not have an accepted value!"}}

if (data.output_status == 'Error') 
{

    if (data.?)
    {        
        $('#username').after('<label class="error">error</label>');
    }
}

編集:

何が起こっているのかわかりませんが、何らかの理由でフォームが送信されなかったという通知が届きました。

$('#login_form :input:visible').each(function() {
var name = $(this).attr('name');
if (data.error_messages.name)
    {
        $(this).after('<label class="error">' + data.error_messages.name + '</label>');
    }
});

public function submit()
{
    $output_status = 'Notice';
    $output_title = 'Not Processed';
    $output_message = 'The request was unprocessed!';

    $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|callback_check_username');
    $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean');
    $this->form_validation->set_rules('remember', 'Remember Me', 'trim|xss_clean|integer');

    if ($this->form_validation->run() == TRUE)
    {

    }
    else
    {
        $output_status = 'Error';
        $output_title = 'Form Not Validated';
        $output_message = 'The form did not validate successfully!';
    }

    echo json_encode(array('output_status' => $output_status, 'output_title' => $output_title, 'output_message' => $output_message, 'error_messages' => $this->form_validation->error_array()));
}

public function check_username($str)
{
    if (preg_match('#[a-z0-9]#', $str)) 
    {
        return TRUE;
    }
    $this->form_validation->set_message('check_username', 'This is not have an accepted value!');
    return FALSE;
}
4

3 に答える 3

3

試す:

if (data.error_messages['username'])
{        
    $('#username').after('<label class="error">' + data.error_messages['username'] + '</label>');
}

ボーナスとして、すべての入力フィールドを繰り返し処理して、同じことを行うことができます。

$('#form-id :input:visible').each(function() {
    var id = $(this).attr('id');
    if (data.error_messages[id])
    {        
        $(this).after('<label class="error">' + data.error_messages[id] + '</label>');
    }
});
于 2012-12-20T20:12:10.190 に答える
1

エラーメッセージには、オブジェクトキー(この場合は「username」)でアクセスできます。

 if(data.error_messages["username"]) // this return undefined if it doesn't exist
 {
   // code
 }
于 2012-12-20T20:12:20.863 に答える
1
if (data.output_status == 'Error') 
{

    if (data.error_messages.username)
    {        
        $('#username').after('<label class="error">' + data.error_messages.username + '</label>');
    }
}

ユーザー名エラーがない場合は、data.error_messages.usernameundefinedを返します。

于 2012-12-20T20:12:58.287 に答える