如何利用ajax從前臺往後臺傳數組

通過將前臺數組拼成字符串傳到後臺,後臺再對這一字符串進行解析。
而不是直接傳一個數組!!

html 刪除

<div class="operation-tool-div"> 				
	<el-button size="mini" icon="el-icon-delete" title="刪除" :disabled="deleteDisabled" @click="handleMultiDelete()"></el-button>
</div>
				

html 多選框

<div class="table-list-div">
	<el-table :data="taskTableData" border ref="table" :height="tableHeight" style="width: 100%"  @selection-change="changeTaskTableSelect">
		<el-table-column type="selection" width="35"></el-table-column>
	</el-table>
</div>

js 多選框事件

 changeTaskTableSelect(selection){
      	this.$emit("selectionChange",selection);
      	if(selection.length>0){
      	    //至少選中一個,刪除按鈕纔可用
      		this.deleteDisabled = false;
      		var ids = ""; 
			for(var i = 0; i < selection.length - 1; i++) {
				ids += selection[i].id + ",";
			}
			ids += selection[selection.length - 1].id;
			this.selectionIds = ids;
	      	}else{
	      		this.deleteDisabled = true;
	      	}
      },

js ajax

 handleMultiDelete() {
      	let _self = this;
      	commonConfirm.show(commonConfirm.level.warn, jobManagement_I18N.DELETE_AFFIRMED,
		function(params) {
      		_self.showSyncLoading = true;
       		$.ajax({
   				url : path + "/test/testAction!removeJobTasks.action",
   				cache: false,
   				type : 'post',
   				data:{
   					ids : _self.selectionIds
   				},
   				success : function(data) {
   					_self.refreshTable();
   					_self.showSyncLoading = false;
   				},
   				error : function(err) {
   				}
   			});
		});
      },

Action

//這裏的ids和js左側的參數保持一致,js左側參數只表示一個參數名,無需定義
String ids = ServletActionContext.getRequest().getParameter("ids");
if(!StringUtils.isEmpty(ids)){
	List<String> idsList = Arrays.asList(ids.split(","));		
	testService.removeJobTaskByIds(idsList);
}

DAO

final String hql = "delete from JobTask s where s.id in (:ids)";
Query query = createQuery(hql);
query.setParameterList("ids", ids);
query.executeUpdate();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章