使用锚标记点击进行codeigniter表单验证

时间:2017-06-22 10:27:06

标签: ajax codeigniter validation

我想在不提交表单的情况下验证某些表单字段。

如果有人可以提供帮助,这是我的代码。

查看:

<form>
<input type="text" name="first_name" placeholder="First Name..." class="textfield">
<a href="javascript:void();" onClick="validateName();">
</form>

脚本:

function validateName(){  

var first_name = $('.textfield').val();

$.ajax({  
url: "Eligibility/contAjax",
type: "POST",
data: first_name,
dataType:"json",
success: function(response){
var obj = eval(response);  
if(obj.error==0){  
console.log('Success');
}
else{  
console.log('Failed');
}
}
});
}

控制器:

public function contAjax(){  

// loading form validation library //
$this->load->library('form_validation');

$this->form_validation->set_rules('first_name', 'First name', 'required');


if($this->form_validation->run()== TRUE){  
echo json_encode(array('error' => 0));
}
else{  
echo json_encode(array('error' => 1));
}

}

它总是返回error = 1并且表单验证不起作用......

1 个答案:

答案 0 :(得分:0)

这是未经测试的代码......但应该有用(他笑着说)

function validateName() {
    var first_name = $('.textfield').val();

    console.log('first_name is ' + first_name); // Check it's getting this far
    $.ajax({
        url: "Eligibility/contAjax",
        type: "POST",
        data: {first_name: first_name},
        dataType: "json",
        success: function (response) {
            if (response.error == 0) {
                console.log('Success');
            }
            else {
                console.log('Failed');
            }
        }
    });
}

因此,通过添加console.log,您可以轻松检查您的价值......

我不是在网址中使用大写字母的忠实粉丝(仅适用于Windows并且可能导致linux / apache服务器上流泪)所以最好使用小写。

只是为了添加一些调试,你可以用简洁的方式检查服务器端看到你发布的内容......

这只是一种检查发布值的方法(使用像firebug或类似的东西要好得多......)

function contAjax() {
// loading form validation library //
    $this->load->library('form_validation');
    $this->form_validation->set_rules('first_name', 'First name', 'required');
    $first_name = $this->input->post('first_name');

    if ($this->form_validation->run() == TRUE) {
        echo json_encode(array('error' => 0, 'first_name' => $first_name));
    } else {
        echo json_encode(array('error' => 1, 'first_name' => $first_name));
    }
}

你的JS会变成......

function validateName() {
    var first_name = $('.textfield').val();

    console.log('first_name is ' + first_name); // Check it's getting this far
    $.ajax({
        url: "Eligibility/contAjax",
        type: "POST",
        data: {first_name: first_name},
        dataType: "json",
        success: function (response) {
            if (response.error == 0) {
                console.log('Success  - First Name = ' + response.first_name);
            }
            else {
                console.log('Failed - First Name = ' + response.first_name);
            }
        }
    });
}

诀窍是知道如何&#34;看&#34;正在发生的事情使得调试这类事情变得更容易......

希望有所帮助。这个代码再次未经测试,但显示了主要内容......