ajax post json数据字符被转义

这两天在做一个easyui datagrid 与服务器端数据交互时遇到了一个问题,

利用ajax上传json格式的数据,对于更改操作使用put方法,对于添加操作使用post方法,js代码如下:

			onAfterEdit : function(rowIndex, rowData, changes) {
				obj.editRow = undefined;
				var type = "POST";
				var url = "/umgr/user";
				$("#save,#redo").hide();
				var deny = true;
				//下面可以处理要保存的数据,通过ajax与后台交互
				if(rowData.deny == 'false') {
					deny = false;
				}
				data = '{'+
						"username:'"+rowData.username+"',"+
						"password:'"+rowData.password+"',"+
						"deny:"+deny+","+
						"metadata:{}}";
				//data = "{'username':'1234','password':'123','deny':false,'metadata':{}}";
				if(!obj.addAction) {//更改操作
					type = "PUT";
					url = url+"/"+rowData.username;
				}
				else {
					obj.addAction = false;
				}
				$.ajax({
			        type: type,
			        url: url,
			        data: data,//此处data为上传的数据
			        dataType: "json",
			        cache:false,
			        success: function (msg) {
			        	console.log(data);
			            if(msg.status==0) {
			            	 $('#dg').datagrid('load');//删除后刷新
			            	  $('#dg').datagrid('unselectAll');//删除后原来选定的行仍处于选定状态
			            	  $.messager.show({//右下角显示删除结果提示
			            		  title:'提示',
			            		  msg:'数据操作成功',
			            	  });
			            }
			            else if(msg.status==1) {
			            	  $.messager.show({//右下角显示删除结果提示
			            		  title:'提示',
			            		  msg:'数据操作失败',
			            	  });
			            }
			        }
				});

测试时当提交put请求时,没有任何问题,后台接收到的json数据正常,奇怪的事情发生在提交post请求,比如我在前端拼了一段json数据:

 {username:'test',password:'test',deny:true,metadata:{}} 
当用post请求时,后台接收到的内容为:
%7Busername%3A%27test%27%2Cpassword%3A%27test%27%2Cdeny%3Atrue%2Cmetadata%3A%7B%7D%7D=

仔细观察可发现冒号、单引号和大括号都被转码,后来在ajax中加入一段代码:

contentType: "application/json",

此时在进行测试,post发送请求,后台接收到的json格式正常了。


问题貌似解决了,但是为何put请求在没有设置contentType时能正常传输数据,post则不能呢?


有时间得研究下put和post的差异


-----------------------------------------无耻的分隔符-----------------------------------


简单来说put与post的差异就是:post是非幂等操作,put是幂等操作

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值