JQuery中Ajax的操作及应用实例
开发工作中,jquery ajax被常常用到,尤其是在无刷新页面完成异步请求的应用上。说明:以下代码仅供学习和研究使用,是为了方便用户测试而提供的样例代码,只是提供一个参考。
我的环境
jQuery v1.11.1
常用参数
url 提交请求的URL,默认当前路径
type 请求的类型(GET 或 POST)
async 是否异步处理。默认是 true。
data 需要提交到服务器的数据
dataType 服务器返回数据的类型,例如xml、json、script、html等
success(result,status,xhr) 请求成功后的回调函数,xhr:XMLHttpRequest
error(xhr,status,error) 请求失败后的回调函数
操作及应用
简单示例
get和post底层也是调用了ajax,只是对其封装了更方便的调用get和post。
ajax 方式
$.ajax({ 'url':'user/simple.php', 'type':'post',//get 'data':{}, 'dataType':'json', 'success':function(result,status,xhr){ console.log(result); //Object {data: "测试"} }, 'error':function(xhr,status,error){ console.log('status:'+ status + ' error:' + error); //错误输出:status:error error:Internal Server Error } });
post 方式
$.post("user/simple.php",{},function(result,status,xhr){ console.log(result); //Object {data: "测试"} },'json').error(function(xhr,status,error){ console.log(status + ' ' + error); //错误输出:status:error error:Internal Server Error });
get 方式
$.get("user/simple.php",function(result,status,xhr){ console.log(result); //Object {data: "测试"} },'json').error(function(xhr,status,error){ console.log(status + ' ' + error); //错误输出:status:error error:Internal Server Error });
后端 simple.php
<?php //header('HTTP/1.0 500 Internal Server Error'); //throw new Exception("抛出错误"); die(json_encode(array('data'=>'测试')));
XMLHttpRequest
abort: (a) always: () complete: () done: () error: () fail: () getAllResponseHeaders: () getResponseHeader: (a) overrideMimeType: (a) pipe: () progress: () promise: (a) readyState: 4 responseJSON: Object responseText: "{"data":"\u6d4b\u8bd5"}" setRequestHeader: (a,b) state: () status: 200 statusCode: (a) statusText: "OK" success: () then: () __proto__: Object
登录示例
异步登录 ajax login
前端 login.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JQuery中Ajax的操作(实例二)- 模拟登陆</title> <script type="text/Javascript" src="jquery.min.js"></script> </head> <body> <form name="loginForm" action="user/login.php" method="post"> <p><input type="text" name="username" value="" placeholder="请输入账号"/></p> <p><input type="password" name="password" value="" placeholder="请输入密码"/></p> <p><input type="button" value="登录"/></p> </form> <script type="text/Javascript"> //点击登录按钮触发点击事件 $('input[type=button]').click(function () { loginSubmit(this); }); function loginSubmit(_this) { //提交按钮 var btn = $(_this); //验证账号 var username = $('input[name=username]').val(); if (username == null || username == '') { alert("用户名不能为空"); return; } //验证密码 var password = $('input[name=password]').val(); if (password == null || password == '') { alert("密码名不能为空"); return; } //form表单 var form = $('form[name=loginForm]'); //异步登录 $.ajax({ 'url': 'user/login.php', 'type': 'post', 'data': form.serialize(),//序列化表单 'dataType': 'json', 'beforeSend': function () { //提交前禁用按钮 btn.attr('disabled', 'disabled'); }, 'success': function (result, status, xhr) { console.log(result); //什么都不输入点击登录 - 前端不判断空情况 //Object {success: false, message: "账号和密码不能为空", data: null} //输入用户名或密码错误 //Object {success: false, message: "用户名或密码错误", data: null} //用户名及密码正确 //Object {success: true, message: null, data: "登录成功"} if (result.success) { //登录成功 alert(result.data); } else { //登录失败 alert(result.message); } //恢复按钮 btn.removeAttr("disabled"); }, 'error': function (xhr, status, error) { //登录异常 console.log('status:' + status + ' error:' + error); //恢复按钮 btn.removeAttr("disabled"); } }); } </script> </body> </html>
后端 login.php
<?php //接收数据 $username = $_POST['username']; $password = $_POST['password']; //定义返回结果 $result = array('success' => false, 'message' => null, 'data' => null); //模拟登陆场景 if(empty($username) || empty($password)){ $result['message'] = '账号和密码不能为空'; echo json_encode($result); exit; } //这里简单模拟 - 用户名为admin,密码为123456 //实际需查询数据库,再判断其密码、用户状态和密码md5等判断操作 if($username!="admin" || $password!="123456"){ $result['message'] = '用户名或密码错误'; echo json_encode($result); exit; } $result['success'] = true; $result['data'] = '登录成功'; echo json_encode($result); exit;
原创文章,转载请注明出处:https://www.weizhixi.com/article/17.html