zoukankan      html  css  js  c++  java
  • 通过JS获取前台数据,并向后台一般处理程序传递

    function AddTeachCourse() {
    
    //取得教师ID var strTeacherID = $("#hidFieldSaveTeacherID").val(); //alert("教师ID="+txtTeacherID); //取得课程ID var strCourseID = $("#hidFieldSaveCourseID").val(); //alert("课程ID="+txtCourseID); //取得上课班ID var strTeachClassID = document.getElementById("ddlTeachClass"); var TeachClassID = strTeachClassID.options[strTeachClassID.selectedIndex].value; //得到ID //取得课程分配的ID(Indexing) var Indexing = $("#hidFieldSaveIndexing").val(); //取得学生数量 var stuNum = $("#txtStuNum").val(); //取得listbox框ID var listStudent = document.getElementById("lsboxStudent"); //取得listbox框中元素长度 var lstStuLength = listStudent.options.length; // var objJsons=""; // var StuArrayObj = new Array(); //创建一个数组,存储学生ID // StuArrayObj[i] = StudentID; //向数组中添加学生ID //*******************以下是:转换json对象的过程*************************// var StuArrayObjs = []; //定义一个空串 for (var i = 0; i < lstStuLength; i++) { var StudentID = listStudent.options[i].value; //取得学生ID var StuArrayObj = {}; //定义一个空对象,存入数据依次写入空串 StuArrayObj["TeacherID"] = strTeacherID; //教师ID StuArrayObj["CourseID"] = strCourseID; //课程ID StuArrayObj["TeachClassID"] = TeachClassID; //上课班ID StuArrayObj["Indexing"] = Indexing; //课程分配ID StuArrayObj["StuNum"] = stuNum; //学生数量 StuArrayObj["StudentID"] = StudentID; //学生ID StuArrayObjs.push(StuArrayObj); }  var TeachCourseJsonString = JSON.stringify(StuArrayObjs); // JSON.stringify() 转换为json串 // var TeachCourseJson = eval("(" + TeachCourseJsonString + ")"); //转换为json对象 // alert(TeachCourseJson[1].TeacherID); //下面$.getJSON 可以传递成功,只是这样传递不能传递过长字符串 //// $.getJSON("../handler/AddTeachCourse.ashx", { TeachCourseJson: TeachCourseJsonString }, function (data) { //// alert(data); //// }); //与AJAX交互,向一般处理程序传递json字符串数组,并返回结果 $.post("../handler/AddTeachCourse.ashx", { TeachCourseJson: TeachCourseJsonString }, function (data) { alert(data); }); }
    
    
    

    注意,如果不用ajax来传递的话. 就拿在mybatis框架里,使用一对多,一个自行车信息主表对应有多个明细表一样.

    那么可以定义一个隐藏域:

    <input type="hidden" name="al" value="TeachCourseJsonString "/>

    需在提交jsp页面到达的action里,定义一个ArrayList集合,而且这个集合属性的名字要跟隐藏域的name一致,也必须是al,才能正常接收到json串哦!


    再写一个工具类JsonToListUtils.java,把前台传过来的json字符串(就是充满了数据的一个字符串)转化为单个object对象或者list集合.

    项目在struts2里写的,贴代码:

    /**
     * 
     */
    package com.aowin.utils;
    
    import java.util.ArrayList;
    import java.util.Map;
    
    import net.sf.json.JSONArray;
    
    import org.apache.struts2.util.StrutsTypeConverter;
    
    import com.aowin.model.BicycleOrderDetail;
    import com.opensymphony.xwork2.conversion.TypeConversionException;
    
    /**
     * @author Li Xiang
     * Description:
     */
    public class JsonToListUtils extends StrutsTypeConverter {
    	/**
    	 * 
    	 */
    	@Override
    	public Object convertFromString(Map context, String[] values, Class toClass) {
    		String jsonString = values[0];
    		JSONArray jsonArray = JSONArray.fromObject(jsonString);
    		ArrayList<BicycleOrderDetail> al = (ArrayList<BicycleOrderDetail>) jsonArray.toList(jsonArray,
    				BicycleOrderDetail.class);
    		return al;
    	}
    
    	/**
    	 * 
    	 */
    	@Override
    	public String convertToString(Map context, Object o) {
    		ArrayList<BicycleOrderDetail> al = (ArrayList<BicycleOrderDetail>) o;
    		JSONArray jsonArray = JSONArray.fromObject(al);
    		return jsonArray.toString();
    	}
    
    	private ArrayList<BicycleOrderDetail> parseBicycleOrderDetail(String jsonString) throws TypeConversionException {
    		JSONArray jsonArray = JSONArray.fromObject(jsonString);
    		ArrayList<BicycleOrderDetail> al = (ArrayList<BicycleOrderDetail>) jsonArray.toList(jsonArray,
    				BicycleOrderDetail.class);
    		return al;
    	}
    }
    
    
    
    
    
    利用了
    StrutsTypeConverter 
    
    
    这个Struts2里的父类.接着还需把jsp里的name=al的隐藏域传过来的json串和上面这个转换类匹配到一起.

    再来个AddBikesAction-conversion.properties局部声明模式,放在同名action类的同一个包下哦.命名规则:xxxxx-conversion.properties.

    然后

    al=com.aowin.utils.JsonToListUtils

    这样就能用json数据技术配合js,很方便的从前台传过来一个集合list,并将list数据写入数据库里.


  • 相关阅读:
    Linux进程监控命令
    自学Java第九天
    自学Java第十天
    自学Java第八天
    自学Java第七天
    自学Java第六天
    Java第五天
    Java练习第四天
    自学Java第三天
    自学Java第二天
  • 原文地址:https://www.cnblogs.com/hangaozu/p/7544438.html
Copyright © 2011-2022 走看看