原生ajax操做
// 第一步:建立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();
// 建立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>
// 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); });
<!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只支持get請求
php
dataType: "jsonp", jsonp: "callback",
例如html
$.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); }, });
$jsonp = $_GET["callback"]; echo $jsonp . '({"success":false,"msg":"參數錯誤"})'; //輸出的字符串前面要拼接上jsonp
注意:其餘瀏覽器都支持,可是IE必須得IE10以上
,只須要服務端接口加上如下頭信息node
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示例jquery
<?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示例ajax
<!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>