2021-01-20

本文详细介绍了JavaScript中的XMLHttpRequest对象以及jQuery中的$.ajax、$.get、$.post和$.getJSON方法,展示了如何异步从服务器获取和提交数据,包括表单序列化及处理返回的JSON数据。同时,讨论了错误处理和数据类型的设定,为前端开发者提供了实用的Ajax操作指南。
摘要由CSDN通过智能技术生成

jQuery 异步ajax

1.0 JavaScript中的XMLHttpRequest对象

    XMLHttpRequest对象 从服务器上面获取数据
    function jsGetData() {
        var xmlhttp = null;
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        } else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.open("GET", "/jQueryAjax/getPersonInfor");  

//指定响应头
xmlhttp.send();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var obj = JSON.parse(xmlhttp.responseText);
console.log(obj);
document.getElementById(“txtName”).value = obj.name;
document.getElementById(“cboSex”).value = obj.sex;
document.getElementById(“txtAddress”).value = obj.address;
}
}
}
//XMLHttpRequest对象 提交页面表单数据
function jsSubmitForm() {
var name = document.getElementById(“txtName”).value;
var sex = document.getElementById(“cboSex”).value;
var address = document.getElementById(“txtAddress”).value;
if (name == “” || sex == 0 || address == “”) {
alert(“请检查数据是否完成”);
return false;
}
var data = “name=” + name + “&sex=” + sex + “&address=” + address;
var xmlhttp = null;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”);
}
xmlhttp.open(“post”, “/jQueryAjax/GetData”);
//指定响应头
xmlhttp.setRequestHeader(“Content-type”, “application/x-www-form-urlencoded”);
xmlhttp.send(data);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
console.log(xmlhttp.responseText);
}
}
}

1.1jQuery中的$.ajax({settings})方法

        $.ajax({settings});
            type:类型,"POST"或"GET",默认值为"GET"
            url:发送请求的地址
            async:设置异步,(默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,
                  请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
            data:是一个对象,连同请求发送到服务器的数据
            dataType:预期服务器返回的数据类型,如果不指定,jQuery将自动根据http包MIME信息来智能判断,
                     一般我们采用json格式,可以设置为"json"
            success:是一个方法,请求成功后的回调函数,传入返回后的数据,以及包含成功代码的字符串
            error:是一个方法,请求失败是调用此函数,传入XMLHttpRequest对象
    jQuery中ajax方法从服务器上获取数据

    function jqGetData() {
        $.ajax({
            type: "get",
            url: "/jQueryAjax/getPersonInfor",
            async:true,//如果设置的值为true则可以省略该行代码
            dataType: "json",
            success: function (data) {
                console.log(data);//js对象
                $("#txtName").val(data.name);
                $("#cboSex").val(data.sex);
                $("#txtAddress").val(data.address);
            }
        })
    }
    jQuery中ajax方法将表单数据提交给服务器

1.2表单序列化

        serialize() 序列表单内容为字符串,用于 Ajax 请求
        serializeArray() 序列化表单元素 (类似 '.serialize()' 方法) 返回 JSON 数据结构数据。
            注意:此方法返回的是JSON对象而非JSON字符串。需要使用插件或者第三方库进行字符串化操作
            返回的JSON对象是由一个对象数组组成的,其中每个对象包含一个或两个名值对——name参数和value参数
    */
    function jqSubmitForm() {
        var name = $("#txtName").val();
        var sex = $("#cboSex").val();
        var address = $("#txtAddress").val();
        if (name == "" || sex == 0 || address == "") {
            alert("请检查数据是否完成");
            return false;
        }
        var frmdata = "name=" + name + "&sex=" + sex + "&address=" + address;
        var serData = $("#myform").serialize();
        var arrData = $("#myform").serializeArray();
        console.log(serData);
        console.log(arrData);
        $.ajax({
            type: "post",
            url: "/jQueryAjax/getDataByFormCollection",
            data: arrData,
            //dataType:'json'
            success: function (msg) {
                alert(msg);
            },
            error: function (xmlhttp) {
                console.log(xmlhttp);
            }
        })
    }

1.0 jQuery中的$.get()方法

        语法:$.get(url, [data], [callback], [type])
        描述:通过远程 HTTP GET 请求载入信息。
            这是一个简单的 GET 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。
        参数说明:
            url:发送请求地址。
            data:待发送 Key/value 参数。
            callback:发送成功时回调函数。
            type:返回内容格式,xml, html, script, json, text, _default。
    
    //使用$.get()方法从服务器上获取数据
    function getFun() {
        $.get("/jQueryAjax/getPersonInfor", function (data) {
            //console.log(data);
            $("#txtName").val(data.name);
            $("#cboSex").val(data.sex);
            $("#txtAddress").val(data.address);
        }, "json");
    }

1.1 jQuery中的 . p o s t ( ) 方 法 语 法 : .post()方法 语法: .post().post(url, [data], [callback], [type])
描述:通过远程 HTTP POST 请求载入信息。
这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。
参数说明:
url:发送请求地址。
data:待发送 Key/value 参数。
callback:发送成功时回调函数。
type:返回内容格式,xml, html, script, json, text, _default。

    function postFun() {
        var strname = $("#txtName").val();
        var strsex = $("#cboSex").val();
        var straddress = $("#txtAddress").val();
        if (strname == "" && strsex == 0 && straddress == "") {
            alert("请检查表单是否填写完毕!");
            return false;
        }
        var frmData = $("#myform").serializeArray();

//$.post("/jQueryAjax/getDataByRequest", { name: strname, sex: strsex, address: straddress }, function (msg) {
// alert(msg);
//});
KaTeX parse error: Expected 'EOF', got '}' at position 117: … }); }̲ 1.3 jQuery中的.getJSON()方法

        语法:$.getJSON(url, [data], [callback])
        描述:通过 HTTP GET 请求载入JSON数据
        参数说明:
            url:发送请求地址。
            data:待发送 Key/value 参数。
            callback:发送成功时回调函数。
    function getJSONFun() {
        var name = $("#txtName").val();
        var sex = $("#cboSex").val();
        var address = $("#txtAddress").val();
        if (name == "" && sex == 0 && address == "") {
            alert("请检查表单是否填写完毕!");
            return false;
        }
        var frmData = $("#myform").serializeArray();
        //$.getJSON()方法只能接受返回值为json的数据
        $.getJSON("/jQueryAjax/getDataByEntityClass", frmData, function (msg) {
            console.log(msg);
            alert(msg);
        });
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值