这里还有一个问题需要您帮助我解决:我有一个ASP.NET网站,它使用AJAX(异步)调用am
.ashx
处理程序,传递一个
查询字符串
参数以从数据库中获取一些信息。
下面是一个如何工作的示例:
客户端
代码片段
/* Capture selected value from a DropDownBox */
var dropdown = document.getElementById(DropDownID);
var selectedValue = dropdown.options[dropdown.selectedIndex].value;
/* Make the call to the handler */
var url = "MyHandler.ashx?param=" + selectedValue;
var ajaxObj = new Ajax();
ajaxObj.doRequest(url, MyCallback, args, connectionFailed);
当我加载
webform
(其中包含这个AJAX调用)第一次,它将正确的查询字符串发送给处理程序(我在VisualStudio中使用debug进行了检查),如
param = Street Joseph BlÃss
. 这是我想要的正确行为。
问题是当我加载它时
再次(以及随后的所有时间)指出
Ã
“Blss”中的字符在服务器端显示为
ÃÂ-
. 因为这是我试图在服务器端数据库访问脚本中选择的实体的密钥,所以它不能像第一个脚本那样工作
负载
查询字符串
在…上
客户端
并对其进行解码
,使用类似以下内容:
客户端
var encodedParam = encodeURIComponent(selectedValue);
/* Make the call to the handler */
var url = "MyHandler.ashx?param=" + encodedParam ;
服务器端
(ASP.NET,C#):
string encodedParam = context.Request.QueryString["param"];
string value = HttpUtility.UrlDecode(encodedParam, Encoding.ASCII);