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>
    原文作者:fsmStudy
    原文地址: https://segmentfault.com/a/1190000017191398
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞