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

CI上的一个简单的AJAX应用

[复制链接]
发表于 2009-11-27 19:08:31 | 显示全部楼层 |阅读模式
本帖最后由 sharmaking 于 2009-11-27 23:50 编辑

这几天做项目想实现注册时自动检测用户名是否合法的一个小功能
一直也还没尝试在CI上部署AJAX应用,在论坛上查遍了很多版友的例子终于搞定了,绕了不少弯路,把自己的这个发出来分享一下
JS
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复制代码
 
<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复制代码
 
<?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复制代码
 
<?php
$config['uri_protocol'] = "PATH_INFO";
?>
 
复制代码

其实没想象中那么难,呵呵
 楼主| 发表于 2009-11-27 19:09:46 | 显示全部楼层
本帖最后由 sharmaking 于 2009-11-27 23:51 编辑

厄,第一次发这个,还不会加高亮~~
~~
厄,之前网络不好,加不了高亮标签,现在搞定了,呵呵
发表于 2009-12-4 15:16:00 | 显示全部楼层
用JQUERY 库就一条语句
自己写的AJAX的JS,老让我头晕
发表于 2010-1-27 23:04:26 | 显示全部楼层
我也同意LS的。
用纯JS写AJAX太罗嗦了,光一个浏览器判断就N条语句。。

用jquery吧。。恩恩。
发表于 2011-6-1 10:23:47 | 显示全部楼层
LZ 你好。。我按照你的方法去做。。但是我就是获取不了返回的值。。为什么会这样的呢??你AJAX上的URL是代表什么??可以详细点吗??如果我的控制器是RE.PHP  里面有一个方法叫INDEX,我想通过AJAX来传一个值给INDEX这个方法。。AJAX上的URL应该怎样写??
感谢楼主回答。。
发表于 2012-2-6 11:52:38 | 显示全部楼层
用POST的 怎么做?
发表于 2012-2-28 13:08:51 | 显示全部楼层
用JQUERY写吧,现在几乎没有这样写的了。
发表于 2013-5-4 11:57:41 | 显示全部楼层
學習中
先拜讀了
发表于 2013-5-11 01:25:39 | 显示全部楼层
justdoit 发表于 2012-2-28 13:08
用JQUERY写吧,现在几乎没有这样写的了。

用JQUERY 主要是怎么写?
不要只说不做
发表于 2016-8-10 16:58:44 | 显示全部楼层
这没什么,关键是控制器不用$this->load->view(页面,数据)而是return 数据,那页面的ajax怎么接收数据

本版积分规则