GVKun编程网logo

Extjs向后台传递参数(exe传递参数)

25

对于Extjs向后台传递参数感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解exe传递参数,并且为您提供关于.ajax向后台传递数组(转)、ajax向后台传递中文数据乱码问题、ajax向后台

对于Extjs向后台传递参数感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解exe传递参数,并且为您提供关于.ajax向后台传递数组(转)、ajax向后台传递中文数据乱码问题、ajax向后台传递参数-动态组织json串、ajax向后台传递参数数组的宝贵知识。

本文目录一览:

Extjs向后台传递参数(exe传递参数)

Extjs向后台传递参数(exe传递参数)

                        listeners : {
                                                beforeload : function (store, options,eOpts) {
                                                    var process = Ext.getCmp(store.rowId+"process").getValue();
                                                    var new_params = { processNameParam: process  };
                                                     Ext.apply( store.proxy.extraParams , new_params ) ;
                                                }

                                        }

process为获取前台的值,processNameParam为传到后台后的值的变量。

如通过struts获取:   private String processNameParam; (setter和getter-OGNL)

 

.ajax向后台传递数组(转)

.ajax向后台传递数组(转)

js部分代码

//创建一个测试数组
var boxIds = new Array();
boxIds.push(12182);
boxIds.push(12183);
boxIds.push(12184);
//向后台交互
$.ajax({
  url: "/xxx",
  type: "GET",
  data: {
    "boxIds": boxIds,
    "boxType": 0,
    "time": new Date().getTime()
  },
  success: function(data) {
    //do sth...
  }
});

后台controller代码(SpringMVC)

@ResponseBody
@RequestMapping(value = "/box/changeLock")
public String changeLock(final Long[] boxIds, final int boxType) {
  return locker_ChangeLockService.changeLock(boxIds, boxType);
}

观察浏览器中发送的请求,可以发现参数如下:

可以看到,参数的名字为boxIds[]而不是我们所定义的boxIds,也就是说,当传递数组时,会在我们的数组名称后自动加上”[]”,所以后台接不到。

解决办法: 

设置jQuery.ajax的tradional属性 :traditional: true,//这里设置为true

$.ajax({
  url: "/xxx",
  type: "GET",
  data: {
    "boxIds": boxIds,
    "boxType": 0,
    "time": new Date().getTime()
  },
  traditional: true,//这里设置为true
  success: function(data) {
    //do sth...
  }
});

修改之后重新发出请求,观察浏览器:

请求参数2

这次参数不带”[]”了,并且后台可以成功接收到该数组。

 

需要特别注意下traditional默认值是false。ajax做数据处理时,是通过jQuery.param( obj, traditional )该方法进行处理。
jquery1.4版本以后
traditional参数,默认false的时候如果是{a:{b:''value''}}是处理成a[b],这样形式,如果是数组:data:{a:[1,2]},是解析成a[]=1&a[]=2,这种方式后台确实要做兼容(取a[b]或a[])来取值。
在数组情况下把traditional参数设置成true,是解析成a=1&a=2,对后台直接通过a拿数据。但是实验了下object情况,把traditional设置成true,转成了a=[object+Object],这样就是费的了。false时解析成上面的形式应该就是类型指示作用,我看到这种格式就知道请求数据是Array还是object了,true就是按照form提交的方式传值。

ajax向后台传递中文数据乱码问题

ajax向后台传递中文数据乱码问题

对需要传递的中文参数先进行两次转码: 1.js文件中使用encodeURI()方法。

var url = "Validate.jsp?id=" + encodeURI(encodeURI(idField.value));

2.在后台中对传递的参数进行URLDecoder解码

String username = URLDecoder.decode(request.getParameter("id"),"UTF-8");

ajax向后台传递参数-动态组织json串

ajax向后台传递参数-动态组织json串

ajax提交json格式的本质是提交了如下格式的参数:"&name=123&password=456",而且这种格式下,name和passowrd都可以是变量赋值,但是使用{“name”:value}格式的话,这里的name是不能为变量的,只有value可以是变量。

1、index.jsp

<form action="<%=basePath%>register/register.action" method="post" id="formid">
		用户名:<input type="text" name="userName" id="userName"/><br /> 
		<input type="submit" value="提交" /><br />
	</form>


2、register.js

$(function(){
	//我们不知道name或者id,只通过class获取元素的id和name以及value,动态获取这些值的话,不能使用{变量:变量}提交,只能使用"&"+变量1+"="+变量2的形式,因为ajax仅支持 {"常量":变量}的json格式
	$(".mark").blur(function(){checkUserName2(this)});
});

//提交表单的ajax
function checkUserName2(theid){
	
	//data="&"+id+"="+value是ajax的本质模式,这里id是一个变量,比如 id="userName",等同于 data={userName:value}={'userName':value},二者 的区别是{}中的key不能为变量
	//var data="&"+id+"="+value;
	var data=gainjson(theid);
	
		$.ajax({
			url : "register/checkUserName.action",// 请求地址
			//timeout : 600000,//超时时间设置,单位毫秒
			async : false,// 异步
			cache : false,// 缓存
			type : 'post',// 请求方式
			/*data: $('#formid').serialize(),//序列化表单*/			
			data:data,dataType : 'json',// 服务器返回的数据类型
			contentType:"application/x-www-form-urlencoded; charset=utf-8",success : function(msg) {// 请求成功后调用的
				if(msg.result=="true"){
					//去除非法提示
					alert("true");
				}else{
					//增加非法提示
					alert("false");
				}
			
			},error :function(){
			alert("异常");
			}
		});

	};

	//获取id和值的公共方法,返回json格式
	function gainjson(theid){
		var id=$(theid).attr("id");
		var value=$("#"+id+"").val();
		var str="&"+id+"="+value;
		return str;
	}

ajax向后台传递参数数组

ajax向后台传递参数数组

前台数据:

  数组

  1-->  直接定义

  2-->  获取页面数据 填充数组(获取的是select中的option数据)

 

var data = document.getElementById(''role'');    
var arrs =new Array();
for(var i=0;i<data.options.length;i++){            
    arrs.push(data.options[i].value);                            
}

  ajax请求  

  一开始注意增加属性 traditional:true, 没有变化

 

var userId = $("#user").val();
if(arrs.length!=0){
    $.ajax({
        type: "POST",
        url: "/userRole/saveOrUpdate",                  
        data: {"userId":userId,"arr":arrs},
        traditional:true,
        async: true,
        dataType:"json",
        success: function(data){
        },
        error: function(){
        }
    });
}

  后台接受

public String saveOrUpdate( String userId, HttpServletRequest request) {
       String[] arr=request.getParameterValues("arr");
    System.out.println(arr);
}

 

  

关于Extjs向后台传递参数exe传递参数的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于.ajax向后台传递数组(转)、ajax向后台传递中文数据乱码问题、ajax向后台传递参数-动态组织json串、ajax向后台传递参数数组等相关内容,可以在本站寻找。

本文标签: