【发布时间】:2015-08-04 18:40:23
【问题描述】:
您好,我是 codeigniter 框架的初学者,但遇到了一些问题。
我做了一个注册表单,在我按下按钮 REGISTER 后,我想调用一个 js 函数 formValidation() 来检查一些基本的事情(比如每个字段是否被填写)。
如果一切正常,那么我想将这些值从注册表单提交到控制器的方法checkExistance(),该方法的任务是从 users_model checkDoesUserExists($username) 调用该方法,该方法将检查我们是否拥有该用户我们数据库中的用户名,他将根据 base 的结果返回 true 或 false。
我的问题是如何从我的表单提交数据并调用控制器方法并将数据传递给该方法(如 $username ...),如果我错过了代码中的其他任何内容?
我真的不知道如何从我的 js 中调用控制器方法? 感谢所有愿意帮助我的人!
这是我的html页面:registration.php
<html>
<head>
<script>
function formValidation(){
var username = document.registrationForm.username.value;
var email = document.registrationForm.email.value;
var name = document.registrationForm.name.value;
var surname = document.registrationForm.surname.value;
if(username == ""){
alert('enter your username');
document.registrationForm.username.focus();
}else if(email == ""){
alert('enter your email');
document.registrationForm.email.focus();
}else if(name == ""){
alert('enter your name');
document.registrationForm.name.focus();
}else if(surname == ""){
alert('enter your surname');
document.registrationForm.surname.focus();
}else{
//alert('OK');
document.registrationForm.submit();
//I would like to call controller's method from here and to pass data to that method - "checkExistance"
}
}
</script>
</head>
<body>
<fieldset>
<legend>Registration form</legend>
<form name="registrationForm" method="post" aciton="<?php echo $_SERVER['PHP_SELF'];?>">
<table>
<tr><td>Username</td><td> <input type="text" name="username" placeholder="insert your username"> </td></tr>
<tr><td>Email</td><td> <input type="text" name="email" placeholder="insert your email"> </td></tr>
<tr><td>Name</td><td> <input type="text" name="name" placeholder="insert your name"> </td></tr>
<tr><td>Surname</td><td> <input type="text" name="surname" placeholder="insert your surname"> </td></tr>
<tr><td> <input type="button" value="REGISTER" onclick="formValidation()"> </td><td> <input type="reset" value="Clear form"> </td></tr>
</table>
</form>
</fieldset>
</body>
</html>
这是我的控制器:users_controler.php
<?php
class Users_controler extends CI_Controller{
function index(){
$this->load->view('registration');
}
function checkExistance(){
$username['username'] = $this->input->post('username');//// ???? This is probably wrong
$this->load->model('users_model');
$result = $this->users_model->checkDoesUserExists($username);
if($result == true){
echo 'OK - username is available, we will now activate in the users_model "addUser()" method to add a user in database';
} else {
echo 'ALERT - User already exists';
}
}
}
这是我的模型:users_model.php
<?php
class User_model extends CI_Model{
function checkDoesUserExists($username){
$query = $this->db->query("select * from users where username = '$username'");
if($query->num_rows()>0){
return false;
}
return true;
}
function addUser(){
// Adding the user in this step
}
}
感谢所有愿意帮助我的人!!!!
【问题讨论】:
-
你试过 ajax 和 jquery 吗?
-
运行JS的时候想从后端请求信息需要AJAX
-
不,我没有尝试使用 AJAX 或 jQuery。你能给我一个例子,如何使用 AJAX 或 jQuery 做到这一点吗?
标签: javascript forms codeigniter models