学习AJAX必知必会(4)~JQuery发送Ajax请求、ajax使用fetch函数(返回值是Promise对象)

简介: 学习AJAX必知必会(4)~JQuery发送Ajax请求、ajax使用fetch函数(返回值是Promise对象)

一、JQuery发送Ajax请求

■ 对于get和post请求,jQuery内部封装了Ajax请求的4个步骤和数据格式的设置

■ 对于Ajax通用请求,jQuery内部封装了Ajax请求的4个步骤和数据格式设置、超时设置、请求失败设置


(1)jquery-server的get请求:

  • 客户端html处理:
//$.get(url, [data], [callback], [type])
    $('button').eq(0).click(function () {
       //$get方法的回调参数接收一个data作为参数---是服务端响应回来的数据(响应体),然后设置响应的数据格式为json
       $.get('http://127.0.0.1:8000/jquery-server', {a:1, b:2}, function (data) {
           console.log(data);
       }, 'json');
    });
  • 服务端jquery-server请求的处理:
app.get('/jquery-server', (request, response) => {
    //设置响应头(允许跨域)
    response.setHeader('Access-Control-Allow-Origin', '*');
    //响应回去一个json对象
    const data = {
        name: '小黑',
        age: 18,
        sex: '男'
    };
    //设置响应体
    response.send(JSON.stringify(data));
});


(2)jquery-server的post请求:

  • 客户端html处理:
//$.post(url, [data], [callback], [type])
    $('button').eq(1).click(function () {
        //$get方法的回调参数接收一个data作为参数---是服务端响应回来的数据(响应体),然后设置响应的数据格式为json
        $.post('http://127.0.0.1:8000/jquery-server', {a:1, b:2}, function (data) {
            console.log(data);
        }, 'json');
    });
  • 服务端jquery-server请求的处理:
app.post('/jquery-server', (request, response) => {
    //设置响应头(允许跨域)
    response.setHeader('Access-Control-Allow-Origin', '*');
    //响应回去一个json对象
    const data = {
        name: '小白',
        age: 18,
        sex: '男'
    };
    //设置响应体
    response.send(JSON.stringify(data));
});


✿(3)jquery-server的通用ajax请求:

  • 客户端html处理:
$('button').eq(2).click(function () {
     $.ajax({
         url: 'http://127.0.0.1:8000/jquery-server/delay',//请求路径
         data: {a:1,b:2,c:3},//请求参数(请求体)
         type:'get',//请求方式
         headers:{'Content-Type': 'application/x-www-form-urlencoded'},//请求头
         dataType: 'json',//请求的数据格式
         timeout:4000,//超时设置
         success: function (data) {//请求成功的回调
             console.log(data);
         },
         error: function () {//请求失败的回调
             console.log('请求出错');
         }
     });
  });
  • 服务端jquery-server请求的处理:
//jquery-server请求超时处理
app.get('/jquery-server/delay', (request, response) => {
    //设置响应头(允许跨域)
    response.setHeader('Access-Control-Allow-Origin', '*');
    //响应回去一个json对象
    const data = {
        name: '小迟',
        age: 18,
        sex: '男'
    };
    //设置响应体
    setTimeout(() => {
        response.send(JSON.stringify(data));
    }, 3000)
});


(4) jQuery 发送jsonp请求:

  • 客户端html处理:
<button>点击发送 jsonp 请求</button>
 <div id="result"></div>
 <script>
    $('button').eq(0).click(function(){
   // jquery封装的ajax的jsonp请求需要有一个callback参数
        $.getJSON('http://127.0.0.1:8000/jquery-jsonp-server?callback=?', function(data){
            $('#result').html(`
                名称: ${data.name}<br>
                 校区: ${data.city}
             `);
        });
     });
 </script>
  • 服务端jquery-server请求的处理:
app.all('/jquery-jsonp-server',(request, response) => {
    // response.send('console.log("hello jsonp")');
    const data = {
        name:'小明',
        city: ['北京','上海','深圳']
    };
    //将数据转化为字符串
    let str = JSON.stringify(data);
    //接收 callback 参数
    let cb = request.query.callback;
    //返回结果
    response.end(`${cb}(${str})`);
});


二、ajax使用fetch函数(类似axios,返回值是Promise对象)

  • 客户端html处理:
btn2.onclick = function () {
        fetch('http://127.0.0.1:8000/fetch-server?a=1&b=2',{
            method: 'post',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            },
            //请求体body(数据格式可以是字符串,也可以是json对象)
            // body: 'name=小明&age=16&sex=男'
            body: {
                name: '小明',
                age: 16,
                sex: '男'
            }
        }).then(response => {
            //若响应回来的数据格式是字符串,响应回来的数据,需要通过text方法转化一下,json格式的话,则需要通过json方法转化一下
            return response.text();
            // return response.json();
        }).then(response => {
            console.log(response);
        })
    }
  • 服务端fetch函数的请求处理:
app.post('/fetch-server', (request, response) => {
    //设置响应头(允许跨域)
    response.setHeader('Access-Control-Allow-Origin', '*');
    //响应回去一个字符串对象
    const data = '小白白';
    response.send(data);
    //响应回去一个json对象
    // const data = {
    //     name: '小白',
    //     sex: '男'
    // };
    // response.send(JSON.stringify(data));
});
目录
相关文章
|
2月前
|
前端开发 安全
协程问题之协程函数返回的Promise对象必须满足哪些要求
协程问题之协程函数返回的Promise对象必须满足哪些要求
|
15天前
|
XML 前端开发 JavaScript
Ajax、Fetch、Axios
Ajax、Fetch、Axios
64 25
|
16天前
|
前端开发 JavaScript Java
SpringBoot+JQuery+Ajax实现表单数据传输和单文件或多文件的上传
关于如何在SpringBoot项目中结合JQuery和Ajax实现表单数据的传输以及单文件或多文件上传的教程。文章提供了完整的前后端示例代码,包括项目的`pom.xml`依赖配置、SpringBoot的启动类`App.java`、静态资源配置`ResourceConfig.java`、配置文件`application.yml`、前端HTML页面(单文件上传和多文件上传加表单内容)以及后端控制器`UserController.java`。文章最后展示了运行结果的截图。
33 0
SpringBoot+JQuery+Ajax实现表单数据传输和单文件或多文件的上传
|
2月前
|
前端开发 JavaScript
ES6 中 Promise对象使用学习
ES6 中 Promise对象使用学习
28 1
|
16天前
|
XML JSON 前端开发
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
24 0
|
2月前
|
前端开发 JavaScript API
惊呆了!学会AJAX与Fetch API,你的Python Web项目瞬间高大上!
【7月更文挑战第15天】AJAX和Fetch API是Web开发中的关键工具,用于异步前后端交互。AJAX借助XMLHttpRequest实现页面局部更新,而Fetch API是现代的、基于Promise的HTTP请求接口,提供更强大功能和简洁语法。结合Python Web框架如Django或Flask,利用这两者能创造无缝体验,提升项目性能和用户体验。学习并应用这些技术,将使你的Web应用焕发新生。**
40 5
|
2月前
|
前端开发 API UED
Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
【7月更文挑战第15天】Python后端(Django/Flask)与前端通过AJAX或Fetch API实现异步交互,提升Web应用体验。Python提供强大的后端支持,AJAX用于不刷新页面的数据交换,Fetch API作为现代标准,基于Promise简化HTTP请求。结合两者,构建高效、流畅的交互系统,优化响应速度和用户体验,开启Web开发新篇章。
45 5
|
2月前
|
前端开发 JavaScript API
告别繁琐!AJAX与Fetch API,让你的前后端沟通畅通无阻,项目效率飙升!
【7月更文挑战第15天】AJAX与Fetch API革新了前后端通信,实现页面局部更新,提高用户体验。AJAX利用XMLHttpRequest异步交互,Fetch API则基于Promises,语法简洁。两者均简化了HTTP请求处理,加速项目开发。通过示例代码展示了如何使用它们进行数据请求与响应处理。拥抱这些技术,让Web应用更流畅,开发更高效!
23 2
|
2月前
|
前端开发 JavaScript API
惊天揭秘!AJAX与Fetch API如何让你的前后端交互秒变‘神级操作’!
【7月更文挑战第15天】在Web开发中,AJAX和Fetch API革新了前后端交互,告别了表单提交带来的页面刷新。AJAX利用XMLHttpRequest实现部分页面更新,开启无刷新时代;Fetch API作为现代替代,以其简洁和Promise支持简化异步操作。从AJAX的先驱地位到Fetch API的进化,两者提升了Web应用的性能和用户体验,成为现代开发的必备技能。
33 2
|
XML JSON 缓存
JQuery中$.ajax()方法参数详解
JQuery中$.ajax()方法参数详解
57 2