sharmaking 发表于 2009-11-27 19:08:31

CI上的一个简单的AJAX应用

本帖最后由 sharmaking 于 2009-11-27 23:50 编辑

这几天做项目想实现注册时自动检测用户名是否合法的一个小功能
一直也还没尝试在CI上部署AJAX应用,在论坛上查遍了很多版友的例子终于搞定了,绕了不少弯路,把自己的这个发出来分享一下
JS

<script type="text/javascript">
var xmlobj; //定义XMLHttpRequest对象
function CreateXMLHttpRequest()
{
      if(window.XMLHttpRequest)
      {//Mozilla浏览器
                xmlobj=new XMLHttpRequest();
                if(xmlobj.overrideMimeType)
                {//设置MIME类别
                        xmlobj.overrideMimeType("text/xml");
                }
      }
      else if(window.ActiveXObject) { //IE浏览器
                try {
                        xmlobj=new ActiveXObject("Msxml2.XMLHttp");
                }
                catch(e) {
                        try {
                              xmlobj=new ActiveXobject("Microsoft.XMLHttp");
                        }
                        catch(e) {
                        }
                }
      }
}

function Validate() //主程序函数
{
      CreateXMLHttpRequest(); //创建对象
      var showurl = "check_username?username=" + document.getElementById ("username").value; //构造URL
      xmlobj.open("GET", showurl, true); //调用validate.phpmingm
      
      xmlobj.onreadystatechange = StatHandler; //判断URL调用的状态值并处理
      xmlobj.send(null); //设置为不发送给服务器任何数据
}

function StatHandler() { //用于处理状态的函数
      if(xmlobj.readyState == 4 && xmlobj.status == 200) //如果URL成功访问,则输出网页
      {
                document.getElementById("msg").innerHTML=xmlobj.responseText ;//替换,即输出结果。
      }
}
</script>


View

<HTML>
<form action="<?php echo site_url('user/do_register')?>" name="form1" method="post" accept-charset="utf-8">
      <table border="0" cellspacing="1" cellpadding="0">
                <tr>
                        <th><label for="username">登录帐户名:<em>*</em></label></th>
                        <td class="input"><input type="text" name="username" id="username" value="" class="text"></td>
                        <td id="msg"></td>
                </tr>
       </table>
<form>
</HTML>


controller

<?php
function check_username() {
parse_str($_SERVER['QUERY_STRING'], $_GET);   //因为CI默认不使用get方法,所以使用的时候要在前面加上这一句
$username = $_GET["username"];
if($query = $this->user_model->check_username($username)){
      echo "<p style='color:ff0000'>该用户名已被注册</p>";
}
else {
      echo "<p style='color:green'>该用户名可以使用</p>";
}
}
?>

对了,还要将config.php改一下

<?php
$config['uri_protocol'] = "PATH_INFO";
?>

其实没想象中那么难,呵呵

sharmaking 发表于 2009-11-27 19:09:46

本帖最后由 sharmaking 于 2009-11-27 23:51 编辑

厄,第一次发这个,还不会加高亮~~
~~
厄,之前网络不好,加不了高亮标签,现在搞定了,呵呵

Minux2007 发表于 2009-12-4 15:16:00

用JQUERY 库就一条语句
自己写的AJAX的JS,老让我头晕

hellcoming 发表于 2010-1-27 23:04:26

我也同意LS的。
用纯JS写AJAX太罗嗦了,光一个浏览器判断就N条语句。。

用jquery吧。。恩恩。

咔咔Sir 发表于 2011-6-1 10:23:47

LZ 你好。。我按照你的方法去做。。但是我就是获取不了返回的值。。为什么会这样的呢??你AJAX上的URL是代表什么??可以详细点吗??如果我的控制器是RE.PHP里面有一个方法叫INDEX,我想通过AJAX来传一个值给INDEX这个方法。。AJAX上的URL应该怎样写??
感谢楼主回答。。

sola 发表于 2012-2-6 11:52:38

用POST的 怎么做?

justdoit 发表于 2012-2-28 13:08:51

用JQUERY写吧,现在几乎没有这样写的了。{:1_1:}

mafly 发表于 2013-5-4 11:57:41

學習中
先拜讀了

114fh 发表于 2013-5-11 01:25:39

justdoit 发表于 2012-2-28 13:08 static/image/common/back.gif
用JQUERY写吧,现在几乎没有这样写的了。

用JQUERY 主要是怎么写?
不要只说不做

丘思甲 发表于 2016-8-10 16:58:44

这没什么,关键是控制器不用$this->load->view(页面,数据)而是return 数据,那页面的ajax怎么接收数据
页: [1] 2
查看完整版本: CI上的一个简单的AJAX应用