一、首先,说一下我要实现的功能
二、传递参数我遇到的问题:
我通过传递教师ID、学年和学期从数据库查询出该教师所教的课程信息,展现在界面上,从数据库我能查询出数据,为什么在界面不出数据呢,我断点调试,发现这样一个现象。我在js中传递的参数,在一般处理程序中获取时,是这样显示的:
于是有了这篇文章的诞生,通过对此问题的搜索,让我了解了编码解码的一些基本知识。
在实际的开发中,我们在页面和页面之间进行数据传递的时候,有时我们会选择Get方式传递参数,例如:
- url: "../handler/QueryCourseByTeacher.ashx?TeacherID=" + teacherID.value + "&SchoolYear=" +getschyearvalue + "&Semester=" + getsemestervalue + "&t=" + new Date().getTime(),
三、了解一下百科中对URL编码的解释
url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。不管哪种情况,在服务器端的表单输入格式样子象这样:
theName=Ichabod+Crane&gender=male&status=missing& ;headless=yes
|
每对name/value由&;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =,&;,和 % 这些特殊的字符。其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。那么汉字的url编码呢?很简单,看例子:“胡”的ascii码是-17670,十六进制是BAFA,url编码是“%BA%FA”。 |
四、如何解决URL中文参数传递编码问题?
1、首先,js中,进行URL编码(使用escape)
- url: "../handler/QueryCourseByTeacher.ashx?TeacherID=" + teacherID.value + "&SchoolYear=" + escape(getschyearvalue) + "&Semester=" + escape(getsemestervalue) + "&t=" + new Date().getTime(),
2、一般处理程序或.ASPX接收页面进行接收参数并解码,使用(context.Server.UrlDecode):
- //学年
- string strSchoolYear = context.Server.UrlDecode(context.Request.QueryString["SchoolYear"]);
- //学期
- string strSemester = context.Server.UrlDecode(context.Request.QueryString["Semester"]);
一、首先,说一下我要实现的功能
二、传递参数我遇到的问题:
我通过传递教师ID、学年和学期从数据库查询出该教师所教的课程信息,展现在界面上,从数据库我能查询出数据,为什么在界面不出数据呢,我断点调试,发现这样一个现象。我在js中传递的参数,在一般处理程序中获取时,是这样显示的:
于是有了这篇文章的诞生,通过对此问题的搜索,让我了解了编码解码的一些基本知识。
在实际的开发中,我们在页面和页面之间进行数据传递的时候,有时我们会选择Get方式传递参数,例如:
- url: "../handler/QueryCourseByTeacher.ashx?TeacherID=" + teacherID.value + "&SchoolYear=" +getschyearvalue + "&Semester=" + getsemestervalue + "&t=" + new Date().getTime(),
三、了解一下百科中对URL编码的解释
url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。不管哪种情况,在服务器端的表单输入格式样子象这样:
theName=Ichabod+Crane&gender=male&status=missing& ;headless=yes
|
每对name/value由&;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =,&;,和 % 这些特殊的字符。其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。那么汉字的url编码呢?很简单,看例子:“胡”的ascii码是-17670,十六进制是BAFA,url编码是“%BA%FA”。 |
四、如何解决URL中文参数传递编码问题?
1、首先,js中,进行URL编码(使用escape)
- url: "../handler/QueryCourseByTeacher.ashx?TeacherID=" + teacherID.value + "&SchoolYear=" + escape(getschyearvalue) + "&Semester=" + escape(getsemestervalue) + "&t=" + new Date().getTime(),
2、一般处理程序或.ASPX接收页面进行接收参数并解码,使用(context.Server.UrlDecode):
- //学年
- string strSchoolYear = context.Server.UrlDecode(context.Request.QueryString["SchoolYear"]);
- //学期
- string strSemester = context.Server.UrlDecode(context.Request.QueryString["Semester"]);