AJAX异步请求
原生ajax操作
JavaScript 异步 GET请求
// 第一步:创建ajax对象 //判断用户的浏览器类型,决定使用何种方式ajax对象 if (typeof ActiveXObject != "undefined") { var version = [ 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP' ]; for (var i = 0; i <= version.length; i++) { try { var obj = new ActiveXObject(version[i]); if (typeof obj != "undefined") { break; } } catch(ex) { } } } else { var obj = new XMLHttpRequest(); } // 感知ajax状态,当ajax状态改变是会触发事件onreadystatechange obj.onreadystatechange = function(){ // 当前状态为4时,数据接收完毕 if (obj.readyState == 4 && obj.status == 200) { // 输出响应信息 alert(obj.responseText); } } // 设置GET传递的信息 var name = '小明'; // 处理中文乱码 name = encodeURIComponent(name); // 第二步:创建一个HTTP请求,并设置"请求地址"及异步请求方式 obj.open("get", "./test.php?fname=" + name + "&addr=beijing", true); // 第三步:发送请求 obj.send();
JavaScript 异步 POST请求
// 创建Ajax对象 //判断用户的浏览器类型,决定使用何种方式ajax对象 if (typeof ActiveXObject != "undefined") { var version = [ 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP' ]; for (var i = 0; i <= version.length; i++) { try { var obj = new ActiveXObject(version[i]); if (typeof obj != "undefined") { break; } } catch(ex) { } } } else { var obj = new XMLHttpRequest(); } // 感知Ajax状态,当Ajax状态改变时会触发事件onreadystatechange obj.onreadystatechange = function(){ // 当前状态为4时,数据接收完毕 if (obj.readyState == 4 && obj.status == 200) { // 输出响应信息 alert(obj.responseText); } } // 创建一个http请求,并设置“请求地址”及异步请求方式 obj.open("post", "./test.php"); // 设置HTTP头协议信息 obj.setRequestHeader("content-type", "application/x-www-form-urlencoded"); var info = "fname=" + "小明" + "&addr=beijing"; // 发送请求 obj.send(info);
jQuery-ajax操作
自行下载并引入jquery: <script src="./jquery.min.js"></script>
jQuery 异步 GET请求
// 1.直接请求 // $(function(){ // $.ajax("./test.php", { // data:{name:"tom",age:23}, // success:function(msg){ // alert(msg); // } // }); // }); // 2.配置setting参数请求 // $(function(){ // $.ajax({ // type:"GET", // url:"./test.php", // data:{name:"tom", age:23}, // success:function(msg){ // alert(msg); // } // }); // }); // 3.通过$.ajaxSetup()方法预先设置全局参数 // $(function(){ // // 预先设置全局参数 // $.ajaxSetup({ // type:"GET", // url:"./test.php", // data:{name:"tom",age:23}, // success:function(msg){ // alert(msg); // } // }); // // 执行ajax操作,使用全局函数 // $.ajax(); // }); // 4.利用$.get()方法请求 //只发送get请求 // $(function(){ // $.get('./test.php'); // }); // 发送get请求并接受返回结果 // $(function(){ // $.get("./test.php", function(msg){ // alert(msg); // }); // }); // 发送请求并传递数据 // $(function(){ // $.get("./test.php", {name:"tom",age:23}, function(msg){ // alert(msg); // }); // }); // 发送get请求并传递数据,接受返回结果,显示返回格式 // $(function(){ // $.get("./test.php", {name:"tom",age:23}, function(msg){ // alert(msg.name + " " + msg.age); // }, "json"); // }); // 使用$.getJSON()可以实现同样的功能 $.getJSON("./test.php", {name:"tom", age:23}, function(msg){ alert(msg.name + " " + msg.age); });
jQuery 异步 POST请求
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>jquery-ajax发送post请求</title> </head> <body> <div>Ajax无刷新评论</div> <ul> <li>姓名:<input type="text" id="input_name" /></li> <li>评论:<input type="text" id="input_comment" /></li> </ul> <input type="button" value="发表评论" /> <table border="1"></table> <script src="./jquery.min.js"></script> <script> // 1.使用$.post()方法发送post请求,与$.get()用法相同 // $(function(){ // $.post("./comment.php", {name:'tom',age:23}, function(msg){ // alert(msg.name + " " + msg.age); // }, "json"); // }); // 2.使用全局ajax参数发送post请求 $(function(){ // 设置全局ajax $.ajaxSetup({ url:"./comment.php", type:"POST", dataType:"json", success:comment_add }); // 添加按钮单击事件 $(":button").click(comment_send); // 获得默认数据 $.ajax(); }); function comment_send(){ var name = $("#input_name").val(); var comment = $("#input_comment").val(); // 提交与获取数据 $.ajax({data:{name:name,comment:comment}}); } function comment_add(data){ html = "<tr><td>" + data.name + "</td><td>" + data.comment + "</td></tr>"; $("table").append(html); } </script> </body> </html>
jQuery-ajax&php跨域请求问题
第一种方法JSONP
注意:JSONP只支持get请求
1.首先在jquery-ajax配置参数中添加这两项
dataType: "jsonp", jsonp: "callback",
例如
$.ajax({ type: "GET", url: "http://127.0.0.1/ajax2/serverjsonp.php?number=" + $("#keyword").val(), dataType: "jsonp", jsonp: "callback", success: function(data) { if (data.success) { $("#searchResult").html(data.msg); } else { $("#searchResult").html("出现错误:" + data.msg); } }, error: function(jqXHR){ alert("发生错误:" + jqXHR.status); }, });
2.然后,在php中做修改
$jsonp = $_GET["callback"]; echo $jsonp . '({"success":false,"msg":"参数错误"})'; //输出的字符串前面要拼接上jsonp
第二种方法XHR2
注意:其他浏览器都支持,但是IE必须得IE10以上
,只需要服务端接口加上以下头信息
header('Access-Control-Allow-Origin:*'); //允许所有访问 header("Access-Control-Allow-Origin", "http://my.domain.cn:8080"); //只允许特定域名访问 header('Access-Control-Allow-Methods:POST,GET'); //允许跨域请求的方法,可以做限定 header('Access-Control-Allow-Credentials:true'); //请求的时候是否带上cookie信息
JavaScript-ajax请求xml数据
xml示例
<?xml version="1.0" encoding="UTF-8" ?> <students> <student> <name>wendy</name> <age>35</age> <addr>Santa Fe</addr> </student> <student> <name>Yaphet</name> <age>32</age> <addr>Balchik</addr> </student> <student> <name>Isaiah</name> <age>35</age> <addr>Caldera</addr> </student> </students>
js示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Ajax获取XML信息</title> <script> function f1(){ // 创建Ajax对象 var obj = new XMLHttpRequest(); // 感知Ajax状态 obj.onreadystatechange = function(){ if (obj.readyState == 4 && obj.status == 200) { // 获取XMLDocument对象 var xmlobj = obj.responseXML; // 获取xml对象的第一个元素结点students var students = xmlobj.childNodes[0]; // 获取元素结点students下所有的student的结点 var student = students.getElementsByTagName('student'); // 遍历student结点,并获得具体信息 var info = ""; for (var i = 0; i < student.length; i++) { var name = student[i].getElementsByTagName('name')[0].firstChild.nodeValue; var addr = student[i].getElementsByTagName('addr')[0].firstChild.nodeValue; var age = student[i].getElementsByTagName('age')[0].firstChild.nodeValue; // 拼接输出信息字符串 info += "姓名:" + name + ",地址:" + addr + ",年龄:" + age + "<br />"; } // 将字符串写入到id名称为result的div字符串中 document.getElementById('result').innerHTML = info; } } // 创建一个http请求,并设置“请求地址” obj.open("get", "./test.xml"); //发送请求 obj.send(); } </script> </head> <body> <h2>Ajax获取XML信息</h2> <div id="result"></div> <input type="button" onclick="f1();" value="触发" /> </body> </html>
相关推荐
坚持着执着 2020-07-16
坚持着执着 2020-06-14
kentrl 2020-11-10
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo
ajaxyan 2020-11-09
zndy0 2020-11-03
学留痕 2020-09-20
Richardxx 2020-11-09
learningever 2020-09-19
chongxiaocheng 2020-08-16
ajaxhe 2020-08-16
lyqdanang 2020-08-16
curiousL 2020-08-03
TONIYH 2020-07-22
时光如瑾雨微凉 2020-07-19
83510998 2020-07-18
jiaguoquan00 2020-07-07
李永毅 2020-07-05