Javascript codeigniter从js调用控制器中的方法
您好,我是codeigniter框架的初学者,我有一些问题 我制作了一个注册表单,按下REGISTER按钮后,我想调用一个js函数Javascript codeigniter从js调用控制器中的方法,javascript,forms,codeigniter,models,Javascript,Forms,Codeigniter,Models,您好,我是codeigniter框架的初学者,我有一些问题 我制作了一个注册表单,按下REGISTER按钮后,我想调用一个js函数formValidation(),该函数应该检查一些基本内容(比如每个字段是否已填充) 如果一切正常,那么我想将注册表中的值提交到控制器的方法checkExistance(),该方法的任务是从用户调用该方法\u modelcheckDoesUserExists($username),该方法将检查数据库中是否有使用该用户名的用户,他将根据base的结果返回true或fa
formValidation()
,该函数应该检查一些基本内容(比如每个字段是否已填充)
如果一切正常,那么我想将注册表中的值提交到控制器的方法checkExistance()
,该方法的任务是从用户调用该方法\u modelcheckDoesUserExists($username)
,该方法将检查数据库中是否有使用该用户名的用户,他将根据base的结果返回true或false
我的问题是如何从表单提交数据并调用controllers方法并将数据传递给该方法(如$username…),以及如果我在代码中遗漏了任何其他内容
我真的不知道如何从我的js调用controllers方法?
谢谢所有愿意帮助我的人
这是我的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>
函数formValidation(){
var username=document.registrationForm.username.value;
var email=document.registrationForm.email.value;
var name=document.registrationForm.name.value;
var姓氏=document.registrationForm.姓氏.value;
如果(用户名==“”){
警报(“输入您的用户名”);
document.registrationForm.username.focus();
}如果出现其他情况(电子邮件==“”){
警报(“输入您的电子邮件”);
document.registrationForm.email.focus();
}else if(name==“”){
警报(“输入您的姓名”);
document.registrationForm.name.focus();
}else if(姓氏==“”){
警惕(“输入您的姓氏”);
document.registrationForm.name.focus();
}否则{
//警报(“正常”);
document.registrationForm.submit();
//我想从这里调用控制器的方法,并将数据传递给该方法——“checkExistance”
}
}
登记表
在控制器操作函数中使用表单验证,如下所示
<?php
class Form extends CI_Controller {
public function index()
{
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'callback_username_check');
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
$this->form_validation->set_rules('email', 'Email', 'required|is_unique[users.email]');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('myform');
}
else
{
$this->load->view('formsuccess');
}
}
public function username_check($str)
{
if ($str == 'test')
{
$this->form_validation->set_message('username_check', 'The %s field can not be the word "test"');
return FALSE;
}
else
{
return TRUE;
}
}
}
您尝试过ajax和jquery吗?如果您想在运行JSNo时从后端请求信息,您需要ajax。我没有尝试过ajax或jquery。你能给我一个如何使用AJAX或jQuery实现的例子吗?谢谢,我将尝试这样做。但我仍然在想,当我点击按钮时,如何调用一些控制器方法并传递数据,使用js、ajax或jQuery执行该方法?这一行在表单验证中回调控制器函数$这->表单验证->设置规则('username'、'username'、'callback\u username\u check');这里username\u check是控制器函数,callback是调用控制器函数进行验证的方法。也许我不太理解这一点,但您可以从这一行的方法index()调用$this->form\u validation->set\u rules('username','username','callback\u username\u check');方法username\u check($str),但我想从js调用,js已经放在我的html页面:registration.php中,我想从controller调用方法。要从js向他提交数据,您需要使用ajax,codeigniter的其他形式验证功能还具有回调任何conroller函数和验证用户输入的功能,然后使用codeigniter的form_error函数显示消息。您能给我一些示例如何使用ajax调用方法并传输数据吗。这将是非常有帮助的,我使用它像一个模板
<?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
}
}
<?php
class Form extends CI_Controller {
public function index()
{
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'callback_username_check');
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
$this->form_validation->set_rules('email', 'Email', 'required|is_unique[users.email]');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('myform');
}
else
{
$this->load->view('formsuccess');
}
}
public function username_check($str)
{
if ($str == 'test')
{
$this->form_validation->set_message('username_check', 'The %s field can not be the word "test"');
return FALSE;
}
else
{
return TRUE;
}
}
}