由于后台只能接收从js传来的字符串,所以,要想把数组传到后台必须要把数组转换成字符串再传,后台取到字符串后再处理,还原成数组的形式。
js代码:
function getExcel(){
var table=document.getElementById('mytable');
var rows=table.rows;
var rowsdata=new Array();
for(i=0;i<rows.length;i++){
var row=rows[i];
var cells=row.cells;
var celldata=new Array();
for(j=0;j<6;j++){
celldata.push(cells[j].innerHTML);
}
rowsdata.push(celldata);
}
dealXML(rowsdata);
}
var XMLHttpReq=false;
function dealXML(data){
XMLHttpReq=false;
createXMLHttpRequest();
var jsonstr='[';
for(i=0;i<data.length;i++){
jsonstr+='{"序号":"'+data[i][0]+'","用户联系手机":"'+data[i][1]+'","用户称呼":"'+data[i][2]+'","反馈内容":"'+data[i][3]+'","反馈时间":"'+data[i][4]+'","反馈版本":"'+data[i][5]+'"},';
}
jsonstr=jsonstr.substring(0,jsonstr.length-1);
jsonstr+=']';
XMLHttpReq.open("GET","./saveExcel?data="+jsonstr, true);
XMLHttpReq.onreadystatechange = handleResponse_CancelState;
<span style="white-space:pre"> </span>XMLHttpReq.send(null);
}
function createXMLHttpRequest(){
<span style="white-space:pre"> </span>if(window.XMLHttpRequest)
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>XMLHttpReq = new XMLHttpRequest();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>else
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
<span style="white-space:pre"> </span>}
}
function handleResponse_CancelState(){
if(XMLHttpReq.readyState == 4){<span style="white-space:pre"> </span>
if(XMLHttpReq.status == 200)
<span style="white-space:pre"> </span>{<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>alert('导出成功');
<span style="white-space:pre"> </span>window.location.reload();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>else{
<span style="white-space:pre"> </span>alert('导出失败');
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
后台取:
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
String jsonString= new String (request.getParameter("data").getBytes("ISO-8859-1"),"utf-8");
System.out.println(jsonString);
List<String> aList = new ArrayList<String>();
List<String> bList = new ArrayList<String>();
List<String> cList = new ArrayList<String>();
JSONArray jsa = JSONArray.fromObject(jsonString);
for(Object obj : jsa){
JSONObject jso = JSONObject.fromObject(obj);
aList.add( jso.get("序号").toString() );
bList.add( jso.get("用户联系手机").toString() );
cList.add( jso.get("用户称呼").toString() );
}
for(int i=0;i<aList.size();i++){
if(i==0)
System.out.print("a:");
System.out.print(aList.get(i)+" ");
}
for(int i=0;i<bList.size();i++){
if(i==0)
System.out.print("b:");
System.out.print(bList.get(i)+" ");
}
for(int i=0;i<cList.size();i++){
if(i==0)
System.out.print("c:");
System.out.print(cList.get(i)+" ");
}
}
运行结果:
[{"序号":"序号","用户联系手机":"用户联系手机","用户称呼":"用户称呼","反馈内容":"反馈内容","反馈时间":"反馈时间","反馈版本":"反馈版本"},{"序号":"0","用户联系手机":"18566925421","用户称呼":"李先生","反馈内容":"我是李先生","反馈时间":"2016-03-08 19:22:00.0","反馈版本":"1.0"},{"序号":"1","用户联系手机":"13958756578","用户称呼":"王女士","反馈内容":"我是王女士","反馈时间":"2016-02-02 19:22:29.0","反馈版本":"1.0"}]
a:序号 0 1 b:用户联系手机 18566925421 13958756578 c:用户称呼 李先生 王女士