问题描述
我想把varstr中的参数通过ajax传到后台中,但是如果内容里有换行或者tab的时候就是提示传入的对象无效,应为“:”或“}”。我从网上查到使用encodeURIComponent,但是如果varjsoncotent=encodeURIComponent(str);那么在后台怎么才能解析其中的参数呢?前台后后台代码如下,请各位指点一下-------------------------------------------------------------------------------------------------------------------------------------------------------------------case"update":{vareditor=$('#elm1').xheditor({tools:'full',skin:'default'});varcountert=editor.getSource();if(imgPath==""){imgPath=null;varstr='{"cTitle":"'+$("#title").val()+'","cContent":"'+countert+'","cImage":"'+imgPath+'","id":"'+thisID+'"}';}else{varstr='{"cTitle":"'+$("#title").val()+'","cContent":"'+countert+'","cImage":"'+imgPath+'","id":"'+thisID+'"}';}alert(jsonContent);$.ajax({//一个Ajax过程type:"post",//以post方式与后台沟通contentType:"application/json",url:"AfterService.aspx/upData",//与此php页面沟通dataType:'json',//从php返回的值以JSON方式解释data:str,error:function(msg){alert(msg.responseText);},success:function(mag){varstr=mag.d;varjson=JSON.parse(str);alert(json.msg);}});}break;------------------------------------------------------------------------------------------------------------------------------------------------------------------------publicstaticstringupData(stringcTitle,stringcContent,stringcImage,stringid){DataBasedb=newDataBase();intID=Convert.ToInt32(id);stringsql="updateContentsetcTitle=@cTitle,cContent=@cContent,cImgPatch=@cImagewhereid=@id";SqlParameter[]sq=newSqlParameter[4];sq[0]=newSqlParameter("@cTitle",cTitle);sq[1]=newSqlParameter("@cContent",cContent);sq[2]=newSqlParameter("@cImage",cImage);sq[3]=newSqlParameter("@id",ID);if(db.runSql(sql,sq)!=0){return"{"msg":"保存成功!"}";}else{return"{"msg":"保存失败!"}";}}
解决方案
解决方案二:
Server.UrlDecode(str);
解决方案三:
弄清楚后台接收需要什么样的格式,再来说前台如何生成.encodeURIComponent通常用来对URL中附带的参数值进行编码,后台会自动解码无需另外的步骤.