/
*前记:暑假项目实训 会员管理平台
*选用技术:jsp+html+jquery
*某些地方需要用到异步处理
/
Servlet 与 Ajax 交换数据
Ajax知识
参见w3cschool:
http://www.w3school.com.cn/jquery/ajax_ajax.asp
正文
Ajax代码
//异步处理事件
$("#lock").click(function(){
//定义数组存数据
var myArray=new Array(1,2,3);
var check=$("input[name='check']:checked");
for(var i=0;i<check.length;i++)
{
myArray[i]=check.eq(i).val();
}
//发送数据
$.ajax({
url:'pointServlet', //请求地址
type:'post', //请求方式
data: //请求参数
{
'cradnumberarr':myArray
},
async : true, //默认为true 异步
error:function() //默认为true 异步
{
alert('error');
},
success:function(data) //失败回调函数
{
alert('success');
}
});
});
});
servlet代码
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException
{
// 设置响应内容类型
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");//这里是转码
request.setCharacterEncoding("utf-8");//这里是转码
//获取内容并获取标识符判断进行什么操作
String markstring=request.getParameter("mark");
//获得请求的多维数组
Map<String, String[]> map=request.getParameterMap();
//标识操作的条数
int markcount=0;
//操作数据库
MemberDao me=MemberDaoFactory.getStudentDaoInstance();
String cardnumberarr[]=null;
Iterator<String> iter = map.keySet().iterator();
while (iter.hasNext())
{
String key = iter.next();
cardnumberarr = (String[]) map.get(key);
}
for(String v:cardnumberarr)
{
System.out.print(v + " ");
}
/**
*自身的业务逻辑
*最后定义一个PrintWriter 来返回数据
*/
PrintWriter out = response.getWriter();//定义一个 out(用于写回去东西)
//以上是发送到客户端的相应类型
out.write("操作了"+markcount+"条数据");//返回到jsp页面
out.flush();//清空缓存
out.close();//关闭 out
}
最后
在涉及跨域访问的时候需要用jsonp来处理ajax成功发送请求却一直进入error回调函数的问题
$.ajax({
url: "跨域的url",
jsonpCallback: "showPrice",
jsonp: "callback",
// tell jQuery we're expecting JSONP
dataType: "jsonp",
data: {
q: "select title,abstract,url from search.news where query=\"cat\"",
format: "json"
},
// work with the response
success: function( data ) {
console.log( data ); // server response
}
});
参数说明
dataType String
预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如XML MIME类型就被识别为XML。在1.4中,JSON就会生成一个JavaScript对象,而script则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:
“xml”: 返回 XML 文档,可用 jQuery 处理。
“html”: 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。
“script”: 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了”cache”参数。”’注意:”’在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)
“json”: 返回 JSON 数据 。
“jsonp”: JSONP 格式。使用 JSONP 形式调用函数时,如 “myurl?callback=?” jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
“text”: 返回纯文本字符串
jsonp,
重写jsonp请求中的回调函数的名称。至俄格值用来替代“callback=?”这种GET或POST请求URL参数里的“callback”部分,例如{jsonp:’onJsonPLoad’}会导致“onJsonPLoad”传递给服务器。
jsonpCallback,
为jsonp指定一个回调函数名。这个值将用来取代jQuery自动生成的随机函数名。这主要用来让jQuery生成度独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。你也可以在想让浏览器缓存GET请求的时候,指定这个回调函数名。但是实际使用过程中,并不用写回调函数,比如此例中的showPrice,不写也不会报错,因为jQuery在处理JSONP的时候,自动帮你生成回调函数并且把数据取出来共success方法调用