post方法

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

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

该方法实际上是简写的 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.responsealert("data: " + data.response);alert("state: " + state)});
}

运行结果:

虽然以上实验已经可以成功的请求服务器并且载入了服务器返回的数据,但是将表单信息转换成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)});
}

服务端代码依旧不变,运行结果:

get方法

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

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

同样的该函数也是简写的 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)});
}

运行结果:

思维导图:

AJAX方法

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

语法:

jQuery.ajax({settings...})

下面的表格中列出了可能的键/值:

示例,服务端代码不变:
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" });
}

运行结果:

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

jQuery用于请求服务器的函数相关推荐

  1. 关于微信等app请求服务器,file_get_contents()函数和CURL用法

    在微信开发demo中,有一句建议注释: //php5.6不建议使用$GLOBALS[]来接收POST数据,推荐改用 file_get_contents("php://input") ...

  2. Ajax请求,JQuery发送请求,Axios请求,Fetch请求总结

    常见的请求方式 1.Ajax请求 定义: 同步与异步的区别: Ajax的工作原理: 实现AJAX的基本步骤: Get请求: Post请求: 2.JQuery发送请求 Get请求: Post请求: 3. ...

  3. ajax调用ashx的方法,jquery.ajax请求aspx和ashx的异同 Jquery Ajax调用aspx页面方法

    1.jquery.ajax请求aspx 请求aspx的静态方法要注意一下问题: (1)aspx的后台方法必须静态,而且添加webmethod特性 (2)在ajax方法中contentType必须是&q ...

  4. ajax datatype为html,Jquery ajax请求中datatype的含义

    一切从一个普通的前端ajax请求jspringMVC后端的例子开始, 前端jquery ajax 请求: $.ajax({ url: getAbsoluteUrl('score/findScore') ...

  5. jQuery ajax请求两次问题,jquery ajax请求了两次问题

    页面有一个请求form: 订单编号 用户帐户 发货状态 请选择 未发送 已发送 查询 JavaScript请求部分: function showdatalist() { var username = ...

  6. C/C++爬虫篇之网络编程(请求服务器)

    目录 C/C++套接字 C/C++请求服务器实现 先来张效果图: 1- C/C++套接字 在说明套接字之前,先简单了解客户端和服务器之间的关系.(往后再发TCP三次握手和四次挥手详细叙述过程) 1.T ...

  7. 下拉选项框选中之后,通过ajax请求服务器,填充页面其他元素的value值

    一.背景 在后台添加产品,有一些东西需要提前在数据库获取,此时,运营显然是不知道该如何操作的,我们需要做的就是方面运营人员经营后台,把需要用到的字段直接查出来,显示在页面上. 如图: 这是需求图 二. ...

  8. jQuery源码分析-each函数

    本文部分截取自且行且思 jQuery.each方法用于遍历一个数组或对象,并对当前遍历的元素进行处理,在jQuery使用的频率非常大,下面就这个函数做了详细讲解: 复制代码代码 /*! * jQuer ...

  9. promise的应用和在VUE中使用axios发送AJAX请求服务器

    promise 用promise对函数封装: 原来的代码: <!DOCTYPE html> <html> <head><title>vue demo&l ...

最新文章

  1. opencv-python单目视觉标定,简单易用。
  2. Java高级语法笔记-HashMap
  3. c语言事件结构体,C语言结构体史上最详细的讲解
  4. 强大的Mockito测试框架
  5. 使用Hibernate的项目中对VO的理解
  6. Python Regular Expression
  7. envi自定义坐标系
  8. 如何查计算机上网找网络协议,怎么查看电脑网络协议
  9. 计算机网络——透明网桥算法
  10. PHP开发API签名验证
  11. nodejs eggjs框架 爬虫 readhub.me
  12. UOJ #34 多项式乘法
  13. cpu、内存、硬盘之间的关系
  14. 21根火柴常胜将军c语言,常胜将军算法
  15. 华中科技大学2017年数学分析高等代数考研试题
  16. html个性花边代码,十种漂亮的多层花边边框代码
  17. PHP正则表达式修饰符
  18. cad老是弹出命令中发生异常_CAD出现致命错误的解决方法
  19. Babe Lua加载项目失败,点了按钮也没反应的解决办法(未将对象引用设置到对象的示例)
  20. 国家列表 Country Code List

热门文章

  1. react textarea 空格为什么不换行_React 怎么实现预防XSS 攻击的
  2. eclipse 右键项目为什么没有properties菜单_只需几步,从零开始搭建SSM项目
  3. java 高并发第三阶段实战_JAVA多线程编程实战视频-第三阶段(共80节)
  4. 中gcd函数_欧拉函数φ(n)的计算及欧拉定理
  5. matlab GUI figure置右上角
  6. ChipScope Pro内核插入器
  7. Tomcat参数配置
  8. 图像处理之基础---高斯低通滤波在指定区域画放大圆形图
  9. JavaScript基础初始时期分支(018)
  10. console.log()的兼容性