jsp中利用jquery+ajax传递json格式参数与前后台之间

经过一段时间的实验琢磨,终于将前后台之间的参数传递搞定了,实验所用工具myeclipse+structs1.2。

总结:容易出错的地方:1.ajax中data的格式一定要写对,这里举了两种形式,一种是  data:{参数:“”}   另一种是  data:“参数=”+变量。

2.后台传递到前台数据转化为json格式,步骤要掌握好。

3.在js使用jquery必须要引用进来,否则会不执行jquery语句,这个问题困扰了我半天才解决掉,菜鸟的悲哀啊。jquery引用流程如下:网上下载jQuery.js,jquery-1.4.2.min.js两个js文件,放在webroot下的文件夹js中,引用代码如下:



其中<%=path%>就代表了根目录wenroot文件目录。

4.ajax的url路径必须要写对。

5.当前台没有传递参数到后台时,data可以不用写,或用data:{}代替。

前台代码如下:

				var checkValue=$("#s1").val();
				//这个var是获取的id问s1的select选择的opention值
				$
				.ajax({
					type : "post",
					url : "getShowDataList.do",
					async : true,
					//data:{data:""},这种也可以
					data : 
						"filepath="+checkValue
					//data:中的是传递到后台的数据,这里数据格式为json格式
					,
					dataType : "json",
					error : function() {
						//alert(checkValue);
						alert('加载失败!');
					},
					success : function(json) {
					//这里的json是后台传递过来的数据,这里数据格式也是json格式
前台获取后台的json格式list数据集,这段写在function中

var points = [];//创建数组 
						for ( var i = 0; i < json.length; i++) {

							var str = new OpenLayers.LonLat(json[i].lon,
									json[i].lat);
							points.push(str);

						}



后台代码:

public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {

		String filepath = request.getParameter("filepath");
		//获取前台传递过来的filepath
		System.out.println(filepath);
		
		List datalist = getShowData(filepath);

		response.setContentType("appliction/json;charset=utf-8");
		JSONArray jsonArray = JSONArray.fromObject(datalist);
                //下面是传递后台json格式的list数据集到前台
		try {

			PrintWriter out = response.getWriter();
			out.print(jsonArray);
			for (int i = 0; i < jsonArray.size(); i++) {
				System.out.println(jsonArray.get(i));
			}
			out.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

你可能感兴趣的:(jsp)