jQuery用于请求服务器的函数

简介:

post方法

jQuery为我们包装简化了常用的请求方法,其中有一个post方法,此方法可以通过 HTTP POST 请求从服务器载入数据。
语法:

jQuery.post(url,data,success(data, textStatus, jqXHR),dataType);

jQuery用于请求服务器的函数

该方法实际上是简写的 Ajax 方法,等价于:

$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

以下使用一个简单的示例演示一下post方法的使用:
服务端代码:

import org.json.JSONObject;

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;
import java.util.Date;
import java.util.HashMap;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        // 声明返回的数据类型为json格式
        resp.setContentType("application/json;charset=utf-8");
        PrintWriter printWriter = resp.getWriter();
        String date = new Date().toLocaleString();

        if (username == null || password == null || password.trim().equals("") || username.trim().equals("")) {
            System.out.println("账户或密码为空!" + date);
            resp.sendError(500);
            return;
        }

        HashMap<String, String> hashMap = new HashMap();

        if (username.equals("lisi") && password.equals("123456a")) {
            System.out.println("登录成功!" + date);
            hashMap.put("response", "success!");
        } else {
            System.out.println("用户名或密码不正确!" + date);
            hashMap.put("response", "username or password error!");
        }

        printWriter.write(new JSONObject(hashMap).toString());
        printWriter.close();

    }
}

客户端代码:
html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<script src="js/jquery-3.2.1.min.js"></script>
<script src="js/post-jq.js"></script>
<body>
    <form onsubmit="post_request();return false;" method="post" >
        <input type="text" required placeholder="用户名" name="username" /><br>
        <input type="password" required placeholder="密码" name="password" /><br>
        <button type="submit" >登录</button>
    </form>
</body>
</html>

js代码:

function post_request() {
    // 第二个参数是json格式的
    $.post("login", {
        "username": $("input[name='username']").val(),
        "password": $("input[name='password']").val()
    }, function (data, state) {
        // 根据服务端返回的json格式得值,所以需要data.response
        alert("data: " + data.response);
        alert("state: " + state)
    });
}

运行结果:
jQuery用于请求服务器的函数
jQuery用于请求服务器的函数

虽然以上实验已经可以成功的请求服务器并且载入了服务器返回的数据,但是将表单信息转换成json格式的那一段代码还是复杂了一些,每个表单组件的数据都得单独的去获得,如果表单中有十来个组件的话,岂不得写十来句代码去逐个获得。所以这时候就得用到一个可以将表单数据序列化成json格式的神器:jquery.serializeJSON,这是一个基于jQuery的开源插件,以下是该插件的下载地址:

http://www.bootcdn.cn/jquery.serializeJSON/

使用该插件后,一句代码就可以解决表单数据序列化成json格式的问题,修改后的代码:

html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<script src="js/jquery-3.2.1.min.js"></script>
<!-- 要在jQuery之后导入该插件 -->
<script src="js/jquery.serializejson.min.js"></script>
<script src="js/post-jq.js"></script>
<body>
    <form onsubmit="post_request(this);return false;" method="post" >
        <input type="text" required placeholder="用户名" name="username" /><br>
        <input type="password" required placeholder="密码" name="password" /><br>
        <button type="submit" >登录</button>
    </form>
</body>
</html>

js代码:

function post_request(formObj) {
    // 只需要提供表单对象,就可以序列化该表单中的数据为json格式
    $.post("login", $(formObj).serializeJSON(), function (data, state) {
        alert("data: " + data.response);
        alert("state: " + state)
    });
}

服务端代码依旧不变,运行结果:
jQuery用于请求服务器的函数
jQuery用于请求服务器的函数

get方法

get和post在使用上基本上是一样的,这是一个简单的 GET 请求功能以取代复杂 \$.ajax 。请求成功时可调用回调函数。如果想要在出错时执行函数,则需要使用 $.ajax。
语法:

$(selector).get(url,data,success(response,status,xhr),dataType)

jQuery用于请求服务器的函数

同样的该函数也是简写的 Ajax 函数,等价于:

$.ajax({
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

示例:
服务端代码只需要把doPost改为doGet即可。
html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<script src="js/jquery-3.2.1.min.js"></script>
<script src="js/jquery.serializejson.min.js"></script>
<script src="js/post-jq.js"></script>
<body>
    <form onsubmit="get_request(this);return false;" method="get" >
        <input type="text" required placeholder="用户名" name="username" /><br>
        <input type="password" required placeholder="密码" name="password" /><br>
        <button type="submit" >登录</button>
    </form>
</body>
</html>

js代码:

function get_request(formObj) {
    $.get("login", $(formObj).serializeJSON(), function (data, state) {
        alert("data: " + data.response);
        alert("state: " + state)
    });
}

运行结果:
jQuery用于请求服务器的函数
jQuery用于请求服务器的函数

思维导图:
jQuery用于请求服务器的函数

AJAX方法

ajax方法是 jQuery 底层的 AJAX 实现,而以上介绍的get和post方法则是ajax方法的简写,ajax方法会返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。
最简单的情况下,ajax() 可以不带任何参数直接使用。
提示:所有的选项都可以通过 $.ajaxSetup() 函数来进行全局设置。

语法:

jQuery.ajax({settings...})

jQuery用于请求服务器的函数

下面的表格中列出了可能的键/值:
jQuery用于请求服务器的函数

示例,服务端代码不变:
html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<script src="js/jquery-3.2.1.min.js"></script>
<script src="js/jquery.serializejson.min.js"></script>
<script src="js/post-jq.js"></script>
<body>
    <form onsubmit="get_request(this);return false;" method="get" >
        <input type="text" required placeholder="用户名" name="username" /><br>
        <input type="password" required placeholder="密码" name="password" /><br>
        <button type="submit" >登录</button>
    </form>
</body>
</html>

js代码:

function ajax_request(formObj) {
    $.ajax({
        type: "post",  // 指定请求方式
        url: "login",
        async: true,  // 开启异步
        data: $(formObj).serializeJSON(),
        success: function (result, state) {  // 回调函数
            alert("result: " + result);
            alert("state: " + state);
        },
        dataType: "json" 
    });
}

运行结果:
jQuery用于请求服务器的函数
jQuery用于请求服务器的函数



本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/2058342,如需转载请自行联系原作者

相关文章
|
4月前
|
Swift iOS开发
iOS Swift使用Alamofire请求本地服务器报错-1002
iOS Swift使用Alamofire请求本地服务器报错-1002
120 1
|
4月前
|
开发框架 缓存 .NET
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
230 0
|
2月前
|
JSON JavaScript 前端开发
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
61 22
|
2月前
|
前端开发 JavaScript Java
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
83 4
|
2月前
|
前端开发 JavaScript 数据处理
JQuery 拦截请求 | Ajax 请求拦截
【10月更文挑战第4天】
126 1
|
2月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
60 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
3月前
|
JSON JavaScript 前端开发
Jquery常用操作汇总,dom操作,ajax请求
本文汇总了jQuery的一些常用操作,包括DOM元素的选择、添加、移除,表单操作,以及如何使用jQuery发送Ajax请求,涵盖了GET、POST请求和文件上传等常见场景。
|
3月前
|
开发者
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
39 1
|
4月前
|
JavaScript 前端开发
jQuery的作用及入口函数
jQuery的作用及入口函数
31 1
|
4月前
|
缓存 数据安全/隐私保护 UED
代理服务器在HTTP请求中的应用:Ruby实例
代理服务器在HTTP请求中的应用:Ruby实例
下一篇
DataWorks