前端通过Jquery封装Ajax发送post请求,上传文件携带参数

需求:通过Ajax的POST请求上传文件并携带参数,后端接口需要的参数是:一个pdf文件和一个用户名

先直接上代码

//html
<form id="uploadForm" enctype="multipart/form-data" >
    <input id="pdfFile" type="file" name="pdfFile" class="choose_file"/>
</form>
<button id="upload">上传文件</button>

//enctype就是encodetype就是编码类型的意思
//默认情况下,enctype的值是application/x-www-form-urlencoded,不能用于文件上传,只有使用了multipart/form-data,才能完整的传递文件数据
//js
$("#upload").on('click',function () {
    const formData =  new FormData($('#uploadForm')[0]);//将选择上传的name="pdfFile"的文件赋值给formData
    formData.append("username","admin");//接口还需要一个用户名参数,通过append附加到formData上
    //formdata.append('name','value'); //使用append的方法为 formdata 对象赋值
    //千万不能直接把参数和文件放在下面post请求的data里面,!!!!data就是整个formData!!!!!
    $.ajax({
        type: 'post',
        url: '/apis/first/*',
        data: formData,
        processData: false, 
        contentType: false,
        dataType:'json',
        success: function (res) {
            console.log(res);
        },
        error: function (){
            console.log('err');
        }
    });
});

在这里插入图片描述

Ajax属性:cache、processData、contentType

① cache:缓存
当发起一次请求后,会把获得的结果以缓存的形式进行存储,当再次发起请求时,如果 cache 的值是 true ,那么会直接从缓存中读取,而不是再次发起一个请求了。
从 cache 的工作原理可以得出,cache 的作用一般只在 get 请求中使用。

② processData:处理数据
默认情况下,processData 的值是 true,其代表以对象的形式上传的数据都会被转换为字符串的形式上传。而当上传文件的时候,则不需要把其转换为字符串,因此要改成false

③ contentType:发送数据的格式
和 contentType 有个类似的属性是 dataType , 代表的是期望从后端收到的数据的格式,一般会有 json 、text……等,而 contentType 则是与 dataType 相对应的,其代表的是 前端发送数据的格式,默认值:application/x-www-form-urlencoded,代表的是 ajax 的 data 是以字符串的形式 如 id=2019&password=123456使用这种传数据的格式,无法传输复杂的数据,比如多维数组、文件等

Jquery的ajax的设置机制为若没有content-type属性,则默认设置为 application/x-www-form-urlencoded; charset=UTF-8 contentType: false设置的目的是让ajax不要操作content-type

小白自己写着记录下学习笔记,欢迎大佬指正

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: jQuery AJAXpost 请求传参需要通过以下方式进行: 1. 将要传输的数据以键值对的形式封装成一个 JavaScript 对象。 2. 将该对象作为 data 参数传递给 $.ajax() 方法中的 options 对象。 示例代码: ``` $.ajax({ url: 'example.php', type: 'POST', data: {name: 'John', age: 30}, success: function(response) { console.log(response); } }); ``` 以上代码中,我们通过传递一个包含 name 和 age 两个属性的 JavaScript 对象作为 data 参数,实现了 Post 请求中的参数传递。 ### 回答2: jQuery ajax方法是一种方便的实现异步请求发送数据和接收数据的工具,它也同样支持HTTP POST请求,可以传递参数。 在jQuery ajax中使用POST请求、传递参数的方法很简单,只需要通过data参数传入一个对象即可。比如: $.ajax({ type: "POST", url: "url.php", data: { name: "John", location: "Boston" } }); 在上面的例子里,我们传递了两个参数name和location,分别为"John"和"Boston"。这个数据对象会被转换成字符串类型,如下所示: name=John&location=Boston jQuery ajax同样支持设置content-type的参数,并且可以对数据进行序列化、加密等操作。其中content-type指定传递的数据格式,常见的有application/x-www-form-urlencoded、multipart/form-data和application/json等。 $.ajax({ type: "POST", url: "url.php", contentType: "application/json", dataType: "json", data: JSON.stringify({ name: "John", location: "Boston" }), success: function(data){ //处理请求成功时返回的数据 } }); 在上面的例子里,我们设置了content-type为application/json,并将数据对象序列化为JSON格式的字符串,请求成功后会得到一个JSON格式的数据对象data,便于处理数据。 总之,jQuery ajaxPOST请求传递参数非常方便,只需要通过data参数传入一个对象,或使用JSON.stringify序列化数据,即可实现传递参数的功能。此外,通过设置content-type参数,可以进一步控制传递数据的格式和行为。 ### 回答3: jQuery中的$.ajax方法是完成异步HTTP请求的基础方法。使用$.ajax方法来发送post请求参数是很常见的操作。下面我们来详细介绍在jQuery中使用$.ajax方法发送post请求参数的步骤。 1. 使用$.ajax方法发送POST请求 使用$.ajax方法发送post请求,需要提供必要的参数。下面是一个使用$.ajax方法发送post请求的示例: ```javascript $.ajax({ url: "your-url-here", type: "POST", data: yourDataHere, success: yourSuccessCallbackFunctionHere, error: yourErrorCallbackFunctionHere }); ``` 2. 配置请求URL 在$.ajax方法中,'url'参数用于配置请求的目标URL。例如: ```javascript url: "your-url-here", ``` 这个URL可以是相对网站根目录的路径,也可以是一个绝对URL,如'http://example.com/your-url'. 3. 配置请求类型 在$.ajax方法中,'type'参数用于配置HTTP请求的类型。对于post请求,可以设置为'POST'。例如: ```javascript type: "POST", ``` 4. 配置请求数据 在$.ajax方法中,'data'参数用于配置发送的数据。这个数据可以是一个纯文本字符串,也可以是一个JavaScript对象。例如: ```javascript data: { name: "your-name-here", age: "your-age-here" }, ``` 在上面的示例中,我们使用一个对象来配置请求数据。这个对象包括两个属性:name和age。 5. 设置响应成功的回调 在$.ajax方法中,'success'回调用于处理HTTP响应成功时的情况。该回调函数接收服务器返回的响应作为参数。例如: ```javascript success: function(response) { console.log(response); }, ``` 在这个简单的示例中,我们使用上面的代码片段中的回调函数来处理响应。在控制台中输出响应数据。 6. 设置响应错误的回调 在$.ajax方法中,'error'回调用于处理HTTP响应失败时的情况。该回调函数接收HTTP错误数据作为参数。例如: ```javascript error: function(jqXHR, textStatus, error) { console.log(error); }, ``` 在这个简单的示例中,我们使用上面的代码片段中的回调函数来处理错误。在控制台中输出错误信息。 综上,我们可以在jQuery中使用$.ajax方法发送post请求参数,操作简单易懂。只需要设置适当的参数,即可完成异步HTTP请求

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值