用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2322|回复: 5
收起左侧

[讨论/交流] 谁能给一个ajax 异步请求提交数据的简单例子

[复制链接]
发表于 2014-8-26 21:51:27 | 显示全部楼层 |阅读模式
用ci写了一个注册表。用户名文本框填写完以后利用Ajax异步功能,自动将数据提交到服务器段检测,比如用户名不能是“admin”。但是在codeigniter框架中该怎么写呀?比如js中的url该怎么写?接收js文件提交数据的控制器文件又该注意哪些事项?哪位大侠能给一个简单完整的例子?
发表于 2014-8-27 10:42:07 | 显示全部楼层
手册上有介绍啊 然后再通过百度一下  这很简单的啊 可以仿照tp的ajaxRetuen写一个类型的函数
发表于 2014-8-27 12:29:39 | 显示全部楼层
<?php echo form_open('xxx/xxx');/*跟下面的url一样*/?>
<input type="text" name="email" id="email" onblur="checkEmail();">
<input type="password" name="password">
</form>
<script>
function checkEmail(){
  xmlHttp=GetXmlHttpObject();
  var url="xxxxx/xx?email="document.getElementById("email").value;//前者是controller,后者是该controller内的方法
  xmlHttp.open("get",url,true);
  xmlHttp.onreadystatechange=checkSuccess;
  xmlHttp.send();
}
function checkSuccess(){
  if(xmlHttp.readyState==4){
    if(xmlHttp.status==200){
    var email_obj=eval("("+xmlHttp.responseText+")");
      if(email_obj.email=="true"){
        $('emails').innerHTML="该电子邮箱可以使用";
      }else{
        $('emails').innerHTML="该电子邮箱不可以使用";
    }
  }
}
function GetXmlHttpObject(){
var xmlHttp;
try{
xmlHttp=new XMLHttpRequest();
}catch (e){
    try{
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e){
      try{
          xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e){
          alert("您的浏览器不支持AJAX!");
          return false;
        }
    }
}
return xmlHttp;
}
</script>

这是view层的,url自己把 控制器/控制器的方法   加上,表单的开头一定要这样echo出来,不能直接写标签,不然出错……具体不知道为啥
发表于 2014-8-27 12:37:02 | 显示全部楼层
<?php

class controller extends CI_Controller
{
function __construct(){
  parent::__construct();
  session_start();
}
function xxxxxx(/*就是提交到这里,不用写参数*/){
   $email=$_GET['email'];
   $this->load->model('model1');
   if($email=="admin"){
    $info='{"email":"false"}';//不可以用
  }else{
    $info='{"email":"true"}';//可以用
  }
  echo $info;//把info返回给ajax那边,给checkSuccess那里判断这个json
  /*上面的到这里为止*/
  /*下面是有数据库版本的,你只检查admin就不用下面这一段了*/
  $res=$this->model1->checkemails($email);/*这里就是把email代入数据库中检测返回结果,可以给你写个只检查admin这个字的*/
  /*下面这里就是跟数据库进行交互之后返回的$res,然后进行判断是否可用*/
  if($res)
   {
     $info='{"email":"true"}';//可以用
   }
   else
   {
     $info='{"email":"false"}';//不可以用
   }
   echo $info;
}

?>
发表于 2014-8-27 12:38:32 | 显示全部楼层
主要就是表单onblur动作那里,对那个email失去焦点就开始发ajax请求去检验
 楼主| 发表于 2014-8-27 21:57:08 | 显示全部楼层
谢谢大家了

本版积分规则