$.ajax()在异步请求中提交数据

$.ajax() 方法中通过 data 属性来存放提交的数据,支持 JSON 格式的数据。
 提交普通格式数据
          在 data 属 性 中 我 们 可 以 通 过 两 种 方 式 来 指 定 需 要 提 交 的 数 据 。 一 种 是 通 过
name=value&name=value 的结构。另一种是通过 JavaScript 对象来指定提交数据。无论使用
哪种方式在 Servlet 中都是通过 request.getParameter 方法根据 name 获取 value 的。
JSP代码文件:
<%--
  Created by IntelliJ IDEA.
  User: 辰南
  Date: 2022/3/27
  Time: 13:01
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="js/jquery.js"></script>
    <script>
        function but(){
            var userid = $("#userid").val();
            var username = $("#username").val();

            $.ajax({
                type:"get",
                url:"data.do",
                data:"id="+userid+"&name="+username,
                success:function(result){
                    $("#span").html(result);
                }

            });
        }
    </script>
</head>
<body>
    用户ID:<input type="text" id="userid"/><br/>
    用户姓名:<input type="text" id="username"/><br/>
    <span id="span"></span>
    <input type="button" value="OK" onclick="but()"/>
</body>
</html>

Servlet代码文件:

package com.bjsxt.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * 在$.ajax()中提交数据
 */
@WebServlet("/data.do")
public class DataServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");
        String userid = req.getParameter("id");
        String username = req.getParameter("name");
        PrintWriter pw = resp.getWriter();
        pw.print(userid+" "+username);
        pw.flush();
        pw.close();
    }
}

小菜鸟不懂得地方,解答在这里:

1.有时候有点不太懂getParameter()方法里面应该填什么值,能不能讲一下

 你好: getParameter()里面写的是你前端页面里name属性的值,你的前端页面里name="id",你                   getParameter("id"),是这样去取值的。

2.怎么设置响应编码,浏览器识别不了中文,我加了setChacaterEcoding还是不行

你好:设置响应编码应该用response设置,

           resp.setContentType("text/html;charset=utf-8");这样你输入中文浏览器就可以识别了。

3.请问ajax的服务端响应要用字符输出流;而ajax的请求,在服务端获取数据就不用考虑用字符输入流,而是可以直接用req的getparameter()获取数据吗?还有就是为什么ajax的服务端响应一定要用字符输出流?

你好:

请问ajax的服务端响应要用字符输出流;而ajax的请求,在服务端获取数据就不用考虑用字符输入流,而是可以直接用req的getparameter()获取数据吗?

对的

还有就是为什么ajax的服务端响应一定要用字符输出流?

在一般处理ajax请求的时候,一般走的就是字符流,字符流处理json比字节高效

对大家有帮助的可以点个小赞支持一下哦!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
$.ajax是jQuery的一个方法,用于发送异步HTTP请求。它可以用于上传文件,以下是使用$.ajax上传文件的步骤: 1. 创建一个HTML表单,包含一个文件输入框和一个提交按钮: ```html <form id="myForm" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="上传"> </form> ``` 2. 使用JavaScript代码监听表单提交事件,并阻止默认的表单提交行为: ```javascript $('#myForm').submit(function(e) { e.preventDefault(); // 阻止表单默认提交行为 // 在这里编写上传文件的代码 }); ``` 3. 在表单提交事件,使用$.ajax方法发送POST请求,将文件数据作为FormData对象发送: ```javascript $('#myForm').submit(function(e) { e.preventDefault(); // 阻止表单默认提交行为 var formData = new FormData(this); // 创建FormData对象,将表单数据包装起来 $.ajax({ url: 'upload.php', // 上传文件的服务器端地址 type: 'POST', data: formData, processData: false, // 不处理数据 contentType: false, // 不设置内容类型 success: function(response) { // 上传成功后的处理逻辑 }, error: function(xhr, status, error) { // 上传失败后的处理逻辑 } }); }); ``` 4. 在服务器端接收上传的文件并进行处理。具体的服务器端代码实现因语言和框架而异,这里以PHP为例: ```php <?php $targetDir = "uploads/"; // 上传文件保存的目录 if (!empty($_FILES['file'])) { $tempFile = $_FILES['file']['tmp_name']; $targetFile = $targetDir . $_FILES['file']['name']; move_uploaded_file($tempFile, $targetFile); // 将临时文件移动到目标位置 } ?> ``` 以上就是使用$.ajax上传文件的基本步骤。通过监听表单提交事件,使用FormData对象将文件数据包装起来,然后通过$.ajax方法发送POST请求到服务器端进行文件上传。服务器端接收到文件后,可以根据具体需求进行处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钰七秒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值