aJax提交——服务端不能用request存储数据,session存数据客户端可以接收到
aJax提交与普通提交是两种迥异的提交方式,这两种提交方式决定了客户端与服务端交互时存储、传输数据的方式也不同。
aJax提交,客户端的请求数据存储在data中,服务端用request.getParameter("xxx");接收;服务端调用PrintWriter的write或print方法写出数据至aJax请求的回调函数,回调函数有一个参数data接收服务端写出的数据。
而普通提交一般是将请求数据存储在表单中或在请求路径中,服务端用request.getParameter("xxx");接收;服务端用request、session、application的setAttribute方法存储数据,然后返回客户端,客户端调用request、session、application的getAttribute方法或用EL表达式接收服务端存储在request、session、application中的数据。
示例:
客户端:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
<script type="text/javascript" src="/demo/js/jquery-1.11.2.js"></script>
<script type="text/javascript">
function ajaxTest(){
$.ajax({
type: "POST",
url: "/mytest/test",
data: "name=John&location=Boston",
success: function(data){
alert( "Data Saved: " + data );//获取服务端写出的数据
}
});
} </script>
</head>
<body>
<a href="/mytest/test" >test</a>
reqArrt:<%=request.getAttribute("tttt")%> sessionAttr:<%=session.getAttribute("tttt")%>
EL:${tttt}
<br>
<input id="test" value="testname" > <input value="ajax" type="button" onclick="ajaxTest();">
</body>
</html>
服务端:注:采用springMVC
package com.shyy.web.controller.anntation; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map; /**
* Created by Administrator on 15-12-6.
* 测试:1.控制器的方法用request、map、model存储数据,客户端页面用EL/request.getAttribute("tttt")均可获取。
* 2.前台用ajax提交,控制器的方法用request、map、model存储数据,客户端页面用EL/request.getAttribute("tttt")均获取不到数据。
* 用session.getAttribute("tttt")可获取存储在session中的数据。
*/
@Controller
@RequestMapping("/mytest")
public class Test {
@RequestMapping("/test")
public void test(HttpServletRequest request,Map<String,Object> map,Model model,HttpServletResponse response) throws IOException {
// map.put("tttt",8888);//ajax提交--客户端页面不可接受到存储在map中的数据
// model.addAttribute("tttt",7777);//ajax提交--客户端页面不可接受到存储在model中的数据
// request.setAttribute("tttt",9999);//ajax提交--客户端页面不可接受到存储在request中的数据
// request.getSession().setAttribute("tttt",11111);//ajax提交--客户端页面可接受到存储在session中的数据 //获取ajax请求的数据
String name = request.getParameter("name");
String location = request.getParameter("location");
PrintWriter writer = response.getWriter();
writer.print(name+"; "+location); // return "demo/test";//非ajax提交返回客户端页面的方式--该方法的返回值要改成String
}
}
此外,如果客户端用aJax提交,并不能用${pageContext.request.contextPath}获取根路径,应该用js的方法(http://www.cnblogs.com/wql025/p/5022725.html)获取。
aJax提交——服务端不能用request存储数据,session存数据客户端可以接收到的更多相关文章
- Ajax轮询——“定时的通过Ajax查询服务端”
Ajax轮询——"定时的通过Ajax查询服务端". 概念: 轮询(polling):客户端按规定时间定时像服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接. 百闻 ...
- Ajax轮询——定时的通过Ajax查询服务端
概念:轮询(polling):客户端按规定时间定时向服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接. test.html //前端代码 <html> <h ...
- 使用ajax向服务端发送Form中的数据
前端代码: <form action="" id="myFormUpdate"> <p>宠物名称: <input type=&qu ...
- java服务端json结果集传值给前端的数据输出格式
在服务端输出json数据时按照一定的格式输出时间字段,fastjson支持两种方式:1.使用JSON.toJSONStringWithDateFormat方法2.JSON.toJSONString方法 ...
- aps.net 用ajax 读取服务端值
1.Default.aspx 页面内容 实例一: <%@ Page Language="C#" AutoEventWireup="true" Code ...
- Jquery Ajax向服务端传递数组参数值
在使用MVC时,向服务器端发送POST请求时有时需要传递数组作为参数值 下面使用例子说明,首先看一下Action [HttpPost] public ActionResult Test(List< ...
- ajax对服务端发送请求
//兼容处理获取ajax对象 var req = ''; if (window.XMLHttpRequest) req = new XMLHttpRequest(); else req = ...
- JSP通过AJAX获取服务端的时间,在页面上自动更新
1.在页面上引入js <head> <meta http-equiv="Content-Type" content="text/html; charse ...
- 使用jquery的$.ajax向服务端传递中文,避免乱码的解决办法!
在js里,对中文使用下面的方法 encodeURIComponent(var) 函数 就ok了!
随机推荐
- 常用的sql标准建表语句
使用指定数据库 use v4base 建一张表 /*************************************************************************** ...
- C#编写以管理员身份运行的程序
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; names ...
- 基于asp.net的Web开发架构探索
问题由来 最近在研究适合团队开发的web架构解决方案,该架构即要适合分工协作又要有一定扩展性,适合不同的数据库需要,因此我查阅了一些资料,初步构想出了一套架构,请各位多多指教. 探索 web开发架构最 ...
- 类的访问修饰符_C#
访问控制修饰符: 访问控制修饰符 类内部 子类 程序集内 程序集外 Default √ Public √ √ √ √ Private √ Internal √ √ √ Protected √ √ Pr ...
- (转)一些国外优秀的elasticsearch使用案例
Github “Github使用Elasticsearch搜索20TB的数据,包括13亿的文件和1300亿行的代码” 这个不用介绍了吧,码农们都懂的,Github在2013年1月升级了他们的代码搜索, ...
- 算法 fill
fill(vec.begin(), vec.end(),); //reset all elements to fill(vec.begin(),vec.begin + vec.size/, );//s ...
- The C in C++
1 unnamed arguments in the argument list of the function definition (Page 114) In c++, an argument m ...
- Poj 2707 Copier Reduction
1.Link: http://poj.org/problem?id=2707 2.Content: Copier Reduction Time Limit: 1000MS Memory Limit ...
- GetStartupInfo 反调试
在使用 CreateProcess 创建进程时,需要传递 STARTUPINFO 的结构的指针,而常常我们并不会一个一个设置其结构的值,连把其他不用的值清0都会忽略,而 ollydbg 也这样做了,我 ...
- java.util.ArrayList源码分析
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess ...