ThinkPHP JQuery Ajax 的实现实例

ThinkPHP JQuery Ajax

ThinkPHP 框架和客户端是完全分离的,没有任何的依赖,而服务端返回 ajaxReturn 方法也是通用的。在《ThinkPHP Ajax 使用详解及实例》一文中,讲述的是 ThinkAjax 类库结合 prototyep 和 mootools 来实现的 Ajax 。事实上可以使用任何 Js 类库来实现 ThinkPHP Ajax ,本文就以 JQuery 来实现《ThinkPHP Ajax 使用详解及实例》一文中同样的功能。

Js 类库

要使用 ThinkPHP JQuery Ajax,需要加载的 Js 类库有:

<load href="/Public/Js/Jquery/jquery.js" />
<load href="/Public/Js/Jquery/jquery.form.js" />

说明:jquery.form.js 类库是一个 JQuery 的插件,在这里用于简化表单的 ajax 交互,可根据实际情况决定是否加载。

这些 Js 类库可以在ThinkPHP 2.1 版本官方示例的 Public/Js/Jquery 下获得,在本节实例代码下载包也提供,请确认在进行 Ajax 测试之前,正确加载了以上 Js 类库。

AJAX 返回

使用 ajaxReturn 与 success/error 这两种方法返回。

关于 ajaxReturn 方法返回具体细节请参阅《ThinkPHP Ajax 使用详解及实例》一文,success/error 返回请参阅《ThinkPHP success/error 方法返回 Ajax 信息》一文。

ThinkPHP JQuery Ajax 实例

例子功能与《ThinkPHP Ajax 使用详解及实例》一样,点击(实际使用中也可以使用其他事件来替代) “检测用户名” 按钮检测用户名是否符合要求,点击 “提交” 按钮根据输入的用户名返回不同的信息。

html 文件

Public/loginJauery.html 模板,Js 处理函数及 form 表单:

<script language="JavaScript">
<!--
function checkName(){
    $.post(‘-Article/checkName‘,{‘username‘:$(‘#username‘).val()},function(data){
        $(‘#result‘).html(data.info).show();
        $("#result").fadeOut(4000);
    },‘json‘);
}

$(function(){
    $(‘#form1‘).ajaxForm({
        beforeSubmit:  checkForm,  // 表单提交执行前检测
        success:       complete,  // 表单提交后执行函数
        dataType: ‘json‘
    });
    function checkForm(){
        if( ‘‘ == $.trim($(‘#username‘).val())){
            $(‘#result‘).html(‘用户名不能为空!‘).show();
            $("#result").fadeOut(4000);
            $(‘#username‘).focus();
            return false;
        }
        // 可以在此添加其它判断
    }
    function complete(data){
        if(data.status==1){
            $(‘#result‘).html(data.info).show();
            // 更新列表
            username = data.data;
            $(‘#list‘).html(‘<span style="color:blue">‘+username+‘你好!</span>‘);
        }else{
            $(‘#result‘).html(data.info).show();
            // 隐藏上次遗留的信息
            $(‘#list‘).hide();
        }
    }
});
//-->
</script>
<div id="result"></div>
<div id="list"></div>
<form name="login" id="form1" method="post" action="-Article/checkLogin">
用户名: <input type="text" name="username" id="username" />
<input type="button" value="检查用户名" onClick="checkName()"><br />
密 码: <input type="password" name="password" /><br />
<input type="hidden" name="ajax" value="1">
<input type="submit" value="提 交">
</form>

说明

  1. 点击“检查用户名”按钮触发 checkName() 函数,该函数是 JQuery 一个简单的 POST 请求功能以取代复杂 $.ajax。
  2. $(‘#form1‘).ajaxForm 用于替代原本的按钮 click 事件 + $.ajax() 实现,这是 jquery.form.js 插件对 form 提交的简化。
  3. 与《ThinkPHP Ajax 使用详解及实例》相比,本文增加了 checkForm() 判断。
  4. 返回的数据 data 中,data.data 表示返回的数据,data.info 表示提示信息,data.status 表示状态,分别与 ajaxReturn 前三个参数对应。
  5. 由于加载了 jquery.form.js 插件,表单须按一般格式提供 action 值及提交按钮 type="submit" 。
  6. 要利用 JQuery 操作更多 html(如追加 html 元素为 append()),请参考 JQuery 手册。

服务端操作

输出 loginJquery.html 模板:

public function loginJquery(){
    $this->display();
}

checkName 及 checkLogin 操作与《ThinkPHP Ajax 使用详解及实例》一文完全一致,为便于查看下面再行列出:

public function checkName(){
    if ($_POST[‘username‘] == ‘admin‘){
        $this->success(‘用户名正确~‘);
    }else{
        $this->error(‘用户名错误!‘);
    }
}
public function checkLogin(){
    if ($_POST[‘username‘] == ‘admin‘){
        $this->ajaxReturn($_POST[‘username‘],‘用户名正确~‘,1);
    }else{
        $this->ajaxReturn(‘‘,‘用户名错误!‘,0);
    }
}

当表单中输入的用户名是 admin 的时候,返回正确信息,否则返回用户名错误的提示。更进一步的,可以将上述 checkLogin 方法进行扩展成为用户登陆检测功能模块。

以上是 ThinkPHP JQuery Ajax 的实现过程及关键代码部分,如果您对 ThinkPHP Ajax 还不是很熟悉,还请同时参考本节前面两篇文章《ThinkPHP Ajax 使用详解及实例》与《ThinkPHP success/error 方法返回 Ajax 信息》。

要查看该实例完整代码,请参阅《ThinkPHP Ajax 实例代码》,或者点击此处下载完整代码。

时间: 2024-11-05 23:44:46

ThinkPHP JQuery Ajax 的实现实例的相关文章

jquery ajax请求简单实例

jquery ajax 参数讲解网址: 点击查看 $.ajax({ type: "post", url: "url", data: { "id": id }, async:true, // 异步请求 cache:false, // 设置为 false 将不缓存此页面 dataType: 'json', // 返回对象 success: function(data) { console.log(data); }, error: function(d

jQuery ajax - getJSON() 用法实例

实例 从 test.js 载入 JSON 数据并显示 JSON 数据中一个 name 字段数据: $.getJSON("test.js", function(json){ alert("JSON Data: " + json.users[3].name); }); 定义和用法 通过 HTTP GET 请求载入 JSON 数据. 在 jQuery 1.2 中,您可以通过使用 JSONP 形式的回调函数来加载其他网域的 JSON 数据,如 "myurl?cal

JQuery Ajax调用WCF实例以及遇到的问题

1.遇到的最多的问题就是跨域问题,这个时间需要我们添加如下代码解决跨域的问题 第一步:在服务类加Attribute [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 第二步:在构造函数中添加 if (WebOperationContext.Current != null) { WebOperationContext.Current.OutgoingRe

jQuery ajax - serialize() 方法

jQuery ajax - serialize() 方法 jQuery Ajax 参考手册 实例 输出序列化表单值的结果: $("button").click(function(){   $("div").text($("form").serialize()); }); 亲自试一试 定义和用法 serialize() 方法通过序列化表单值,创建 URL 编码文本字符串. 您可以选择一个或多个表单元素(比如 input 及/或 文本框),或者 fo

jQuery ajax - getScript() 方法

jQuery Ajax 参考手册 实例 通过 AJAX 请求来获得并运行一个 JavaScript 文件: $("button").click(function(){ $.getScript("demo_ajax_script.js"); }); 亲自试一试 定义和用法 getScript() 方法通过 HTTP GET 请求载入并执行 JavaScript 文件. 语法 jQuery.getScript(url,success(response,status))

【JavaScript】jQuery Ajax 实例 全解析

jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法,当然,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()的(这个后面会说到). 1. load( url, [data], [callback] ) :载入远程 HTML 文件代码并插入至 DOM 中. url (String) :

jQuery Ajax 实例 ($.ajax、$.post、$.get)

Jquery在异步提交方面封装的很好,直接用AJAX非常麻烦,Jquery大大简化了我们的操作,不用考虑浏览器的诧异了. 推荐一篇不错的jQuery Ajax 实例文章,忘记了可以去看看,地址为:http://www.cnblogs.com/yeer/archive/2009/07/23/1529460.html 和 http://www.w3school.com.cn/jquery/ $.post.$.get是一些简单的方法,如果要处理复杂的逻辑,还是需要用到jQuery.ajax() 一.$

jQuery Ajax 实例 ($.ajax、$.post、$.get)转

Jquery在异步提交方面封装的很好,直接用AJAX非常麻烦,Jquery大大简化了我们的操作,不用考虑浏览器的诧异了. 推荐一篇不错的jQuery Ajax 实例文章,忘记了可以去看看,地址为:http://www.cnblogs.com/yeer/archive/2009/07/23/1529460.html 和 http://www.w3school.com.cn/jquery/ $.post.$.get是一些简单的方法,如果要处理复杂的逻辑,还是需要用到jQuery.ajax() 一.$

jQuery Ajax: $.post请求实例

jQuery Ajax: $.post请求实例 leyangjun.html页面 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="./jquery-2.0.0.min.js"></scri