jQuery ajax()方法

  • Post category:jquery

当我们需要通过JavaScript来与服务器进行数据交互时,其实就是需要使用到 AJAX 技术,而 jQuery 提供的 ajax() 方法则是一种简便的实现方式。本文将详细讲解 jQuery ajax() 方法的基本用法以及常用参数。

基本用法

ajax() 方法用于向服务器发送请求,并接收服务器响应。具体使用方式如下:

$.ajax({
    url: "server.php", //请求地址
    type: "POST", //请求方法
    data: { name: "tom", age: 18 }, //请求数据
    success: function(result) {
        //请求成功后的处理函数
        console.log(result);
    },
    error: function(xhr, status, errorThrown) {
        //请求失败后的处理函数
        console.log(status + ":" + errorThrown );
    }
});

以上代码中,ajax() 方法接收一个对象作为参数,其中包含了一系列参数设置。其中,url 即为请求地址,type 为请求方式(GET 或 POST),data 为请求数据,success 和 error 分别为请求成功和失败后的回调函数。

常用参数

除了上述的基本用法外,我们还可以针对具体需求使用一些常用参数来进行高级设置。

dataType

dataType 用于指定服务器返回数据的格式。常用值包括:xml、json、script、text 等。例如:

$.ajax({
    url: "server.php",
    dataType: "json",
    success: function(data) {
        //请求成功后的处理函数
        console.log(data.id + ":" + data.name);
    }
});

以上代码中,dataType 被设置为 “json”,表示预计服务器响应的是一个 JSON 格式的数据。请求成功后,将执行 success 回调函数,并将服务器返回数据解析为对象形式进行处理。

timeout

timeout 用于指定请求超时时间,单位为毫秒。例如:

$.ajax({
    url: "server.php",
    timeout: 3000,
    success: function(data) {
        //请求成功后的处理函数
        console.log(data);
    },
    error: function(xhr, status, errorThrown) {
        //请求失败后的处理函数
        console.log(status + ":" + errorThrown );
    }
});

以上代码中,timeout 被设置为 3000,表示如果请求超过 3 秒还未收到服务器响应,则认为请求超时,将执行 error 回调函数。

示例说明

下面给出两个具体的示例进行说明。

示例一:获取天气数据

$.ajax({
    url: "https://tianqiapi.com/api",
    data: {
        version: "v6",
        cityid: "101020100",
        appid: "66821543",
        appsecret: "G9l0Tl6j"
    },
    dataType: "jsonp",
    success: function(result) {
        console.log(result.city + ":" + result.wea);
    },
    error: function(xhr, status, errorThrown) {
        console.log(status + ":" + errorThrown );
    }
});

以上代码中,我们向天气 API 发送 GET 请求,请求参数包括城市 ID、appid 和 appsecret。由于天气 API 返回的数据格式为 JSONP,所以我们需要将 dataType 设置为 “jsonp”。请求成功后,将输出当前城市和天气状况。

示例二:上传文件

<input type="file" id="file">
<button id="btn">上传文件</button>
<script>
    $("#btn").click(function() {
        var file = $("#file")[0].files[0];
        var formdata = new FormData();
        formdata.append("file", file);
        $.ajax({
            url: "upload.php",
            type: "POST",
            data: formdata,
            processData: false,
            contentType: false,
            success: function(result) {
                console.log(result);
            },
            error: function(xhr, status, errorThrown) {
                console.log(status + ":" + errorThrown );
            }
        });
    });
</script>

以上代码中,我们首先通过 input[type=file] 元素获取用户选择的文件,并将其存储于 formdata 中。然后,我们向 upload.php 发送一个 POST 请求,请求数据即为 formdata。由于我们需要上传文件,因此需要将 processData 和 contentType 设置为 false,以确保数据以正确的格式发送到服务器。请求成功后,将输出服务器返回结果。