Ajax与Servlet的数据交互

/
*前记:暑假项目实训 会员管理平台
*选用技术: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方法调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值