1. 程式人生 > >js實現向後臺傳遞二維陣列

js實現向後臺傳遞二維陣列

由於後臺只能接收從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:使用者稱呼 李先生 王女士 


相關推薦

js實現後臺傳遞陣列

由於後臺只能接收從js傳來的字串,所以,要想把陣列傳到後臺必須要把陣列轉換成字串再傳,後臺取到字串後再處理,還原成陣列的形式。 js程式碼: function getExcel(){   var table=document.getElementById('mytable

js傳遞陣列到java後臺 0人關注 講義教程 資訊 常見問題 開發技巧

思路:前臺使用jquery.ajax吧二維陣列傳送到java後臺,Java後臺能獲取到一維的陣列,需要將一維的陣列再次進行切割,java後臺使用字串的切割類StringTokenizer將收到的一維陣列按照指定的分隔符進行切割,前臺傳送過來的陣列預設以“,”分開,所以使用逗號作為切割符號。重點是紅色標記的部

Spring框架 Controller傳遞陣列 到jsp的 js

環境說明: J2EE 專案 、Spring框架 、jsp中使用taglib標籤 解決辦法: 1.Controller 中使用modle新增陣列 2.jsp的js中使用<c:forEach></c:forEach>獲取二維陣列 關鍵程式碼示例:

C#呼叫C++的dll傳遞陣列

1.C++中標頭檔案.h extern "C" MATHFUNCSDLL_API  int  __stdcall CallTest(int** arr, int rows, int cols); 2.C++中原始檔.cpp int __stdcall CallTest

C語言傳遞陣列

方法一, 形參給出第二維的長度。 例如: #include <stdio.h> void func(int n, char str[ ][5] ) { int i; for(i = 0; i < n; i++) printf("/nstr[%d] = %s/n"

劍指offer-Java實現:題目1、陣列中的查詢

  題目描述 在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。   思路:由於題目說從左到右,從上到下都是遞增的。我一開

【C++】函式如何傳遞陣列陣列是怎麼通過指標進行傳遞

舉例子: int data[3][4] ={ {1,2,3,4} , {5,6,7,8} , {9,10,11,12} }; int total = sum(data,3); 請自己先嚐試寫出sum函式的原型 思考過後,請繼續看下面詳細分析:

劍指offer(java實現)第1題“陣列中的查詢”-牛客網

題目描述 在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數 時間限制:1秒 空間限制:32768K 熱度指數:753571 解答

C++傳遞陣列

c++之所以強大,其中重要原因之一就是支援指標,然而這也是c++最令人頭痛的問題之一,其中二維陣列作為引數傳遞就是其中之一。 一、關於一維陣列 C++中一維陣列作為函式引數傳遞應用十分普遍,原理和操作都十分簡單。陣列名就代表了陣列的首地址,下標就是偏移量。函式的形式引數宣告為一級指標即可(Type *),

利用指標傳遞陣列進行行列式轉置

#include <stdio.h> #include <stdlib.h> void input(int *pa,int n) {     int i;     for(i=0;i<n;i++,pa++)         scanf("%d"

$.ajax傳遞陣列到PHP

/*用$.ajax傳遞二維陣列*/ var data = [];//建立data陣列物件 for(var i=0;i<a;i++){key = $(this).data("key");//這是從html當前物件獲得data-key裡面的引數value = $(this

JS實現帶有logo的

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&g

C++ vector 實現動態大小的陣列

      為什麼會寫這個文章呢?是因為最近做一個opencv相關的專案,涉及到儲存畫素座標,但是我並不知道畫素的數量,所以想建立一個二維陣列來動態儲存畫素的x,y座標。由書上的知識可知,C++中的二維陣列實質上是一維數組裡儲存的元素仍然是一維陣列,而且在定義的時候必須指定陣

關於ajax傳遞陣列的一些測試和驗證

var data = [];              $('.choose_Tab tbody .active').each(function(i){                  var tmp = {};                  tmp['proid

Java 實現順時針螺旋陣列輸出

看到一道有點意思的邏輯演算法題,便著手實現一下。列印 N*N順時針螺旋陣列,規律如下: // 1 2 3 4 5 // 16

【C/C++】用指標實現陣列傳遞、使用的4種示例,及各種變形。

請看例程。 #include <stdio.h> #include <stdlib.h> /* *func1:用int a[]傳遞二維陣列 *func2:用int a[][10]傳遞二維陣列 *func3:用int *a[10]傳遞二維 *

js實現陣列的旋轉

我最近因為做了幾個小遊戲,用到了二維陣列,其中有需求將這個二維陣列正翻轉 90°,-90°,180°。 本人是笨人,寫下了存起來。 定義的基本二位陣列渲染出來是這種效果。 現在想實現的結果是下面的效果: 當然可以讓div用position定位,left和top調整。 但是我就想改變陣列的話,

JS實現陣列的深拷貝及外掛程式碼

深拷貝與淺拷貝的介紹 在寫程式碼前先簡短介紹下JS中淺拷貝與深拷貝的區別。 JavaScript中有兩種型別的物件拷貝:淺拷貝(Shallow Copy)、深拷貝(Deep Copy): 深複製和淺複製最根本的區別在於是否是真正獲取了一個物件的複製實體,而不是引用。 淺拷貝——只是拷貝了

js實現簡單的一陣列變成陣列

陣列a為1~50的整數,b陣列為a陣列的前一個數除以後一個數所得的值,c陣列由b陣列每行5個排序而成。下面為javaScript程式碼實現: var a = new Array(); var b = new Array(); var c = new Array

js如何陣列中新增物件並通過ajax後臺傳遞list資料

js動態向陣列新增物件,並通過ajax提交List資料到後臺 var data=[{name: '張三',age: 18,id: 1},{name: '李四',age: 22,id: 2}]; var test= []; for (var i = 0; i < data.le