如何利用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();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章