AJAX向后台传递数据(包括数组)的方法

我是一个Java Web新手程序员,今天来总结一下用AJAX向后台传递数据的写法,如有问题欢迎指正。

首先我们来重申一下在JQuery中封装的AJAX的写法(相对于原生js写法):

$.ajax({
			type : "post",
			url : "Student_Change_Password",
			data : $("#form").serialize(),
			success : function(msg){
				alert(msg);
			},
			error : function(msg){
				alert("error");
			},
			complete : function(){
				
			},
		});

其中,

type是HTML请求类型,可以选post或get;

url是目标路径,可以是jsp或servlet;

data是要传输给目标路径的数据,$("标签id").serialize()是将所选标签内容序列化成JSON数据的方法,比如里面写form标签的id,那么这个form表单里面的标签都会被写入data中。目标文件取的时候直接request.getParameter("标签name")即可;

success,error,complete是回调函数。AJAX是前台和后台进行异步通信的过程,前台发data给后台,后台还得发点数据回来,回来后的落脚点就是回调函数。如果AJAX通信成功了,就执行success方法;失败了就执行error方法;执行完success或error后执行complete方法,表示AJAX通信结束。


本文就是要介绍一下:data怎么写


P.S:JavaScript基本数据类型:字符串、数字、布尔、数组、对象、Null、Undefined

举一个例子:在jsp页面中,利用<%%>取到了上个页面传来的两个数据,一个字符串,一个整型。在JS中定义了一个数组。使用AJAX传这三个变量。

<%
String req_str = request.getParameter("str");
Integer req_id = request.getParameter("id");
%>
<script type="text/javascript" src="../js/jquery-1.11.1.min.js"></script>//引入JQuery文件,src的内容因项目路径而异
<script type="text/javascript">
    var str = '<%= req_str %>';//字符串类型不要忘记引号!
    var id = <%= req_id %>;
    var arr = new Array();//定义一个数组
    
    for(var i = 0; i < id;i++){
        arr[i] = i;
    }
    
    $(function(){//是页面加载时执行的初始化方法,类似C++的构造方法
    //注意下面括号匹配
    $("#触发AJAX的标签id").click(function (){//click方法是标签点击时触发
        $.ajax({
                        type : "post",
                        url : "Student_Judge",//servlet
                        contentType:"json",
                        data : {"a_arr":arr,"a_id":id,"a_str":str},
                        traditional : true,//如果要传数组,这行一定要加!用传统的方式来序列化数据
                        success : function(msg){
                            alert(msg);
                        },
                        error : function(){
                            alert("error");
                        },
               });
          });//click
     });//初始化方法
 </script>

JSP页面编写完毕,接下来看一下servlet的部分(如果AJAX的url写的是jsp,那就去目标jsp中用<%java代码%>取值,和这个jsp那段类似),如果type选post,那么就会访问servlet的doPost()方法;如果type是get,就会访问doGet()方法。

protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
    String str = request.getParameter("a_str");
    Integer id = Integer.valueOf(request.getParameter("a_id"));//Integer.valueOf() 将字符串转换成Integer类型
    String[] arr = request.getParameterValues("a_arr");//getParameterValues() 取数组
} 


猜你喜欢

转载自blog.csdn.net/qq_31293215/article/details/80332748