首页 > 简文 > 宝藏问答 >

问 jquery 的 ajax 请求 完整用法讲解

2026-11-08 16:54:04
最佳答案

答

jQuery 的 ajax 请求,就是 jQuery 对原生 XMLHttpRequest 做的封装,用来在页面不刷新的情况下,和后端服务器异步交互数据,支持 GET、POST 等请求方式,有简写方法 .post (),还有最完整、功能最全的底层方法 $.ajax (),现在新项目大多改用 fetch 或者 axios,但是老项目、老教材里面仍然大量使用 jQuery ajax,它最大优点是写法简洁,兼容旧浏览器,统一回调写法。

基础信息对照表

方法特点
$.ajax()核心底层方法,参数最全,可配置所有选项
$.get()简写,专门 GET 请求
$.post()简写,专门 POST 请求
$.getJSON()简写,专门请求 JSON 数据

核心 $.ajax () 完整示例

$.ajax({

url: "api/test", // 请求地址

type: "POST", // 请求方式 GET / POST

data: { name: "tom", age: 18 }, // 提交参数

dataType: "json", // 预期返回数据类型

contentType: "application/json", // 请求头

success: function(res){

// 请求成功回调

console.log(res)

},

error: function(xhr){

// 请求失败回调

console.log("请求出错", xhr)

}

})

简写方法示例

// get简写

$.get("api/test", {id:1}, function(res){

console.log(res)

})

// post简写

$.post("api/test", {name:"jack"}, function(res){

console.log(res)

})

// getJSON

$.getJSON("api/data.json", function(res){

console.log(res)

})

深度补充要点

  1. 常用配置项
  • async:是否异步,默认 true,改成 false 就是同步请求,同步会阻塞页面,不推荐使用
  • headers:自定义请求头,携带 token
  • timeout:超时时间,单位毫秒,超时触发 error
  • beforeSend:请求发送之前执行,可以在这里添加 loading
  • complete:请求完成(不管成功失败都会执行)
  1. 跨域问题
  2. 回调演变

jQuery ajax 同样受浏览器同源策略限制,跨域需要后端配置 CORS,或者使用 jsonp,注意 jsonp 只支持 GET 请求。

旧版 jQuery 是 success/error 回调,新版 jQuery 1.8 + 支持 Promise 链式写法:

$.ajax({url:"api/test"})

.done(function(res){})

.fail(function(err){})

.always(function(){})

  1. 优缺点

✅ 优点:兼容 IE 等老旧浏览器,配置简单,老项目维护方便

❌ 缺点:已经停止更新,原生 fetch、axios 更现代,不再推荐新项目使用

综合来看,jQuery ajax 核心掌握 $.ajax 完整参数,以及 get、post 简写,理解异步、跨域、success/error 回调机制即可。

【常见问题】

问题 1 jquery 的 ajax 请求 默认是异步还是同步

回答 1 jquery 的 ajax 请求默认 async:true,也就是异步请求,设置 async:false 才是同步,同步会阻塞页面渲染。

问题 2 jquery 的 ajax 请求 跨域可以用 jsonp 吗

回答 1 jquery 的 ajax 请求支持 jsonp 跨域,但是 jsonp 只支持 GET 请求,现代跨域优先后端 CORS 方案。

问题 3 jquery 的 ajax 请求 还推荐新项目使用吗

回答 1 jquery 的 ajax 请求已经不再推荐新项目,现在主流是 axios 或者原生 fetch,jQuery ajax 多用于旧项目维护。

【免责申明】

本内容仅为 jquery 的 ajax 请求相关前端技术科普,属于代码教学解析,不同 jQuery 版本 API 存在细微差异,请勿用于商业传播。