我的字符串中有 #
。
我通过 ajax 将该字符串发送到服务器端的 C# 方法。
我发送的内容如下:
$.ajax({
type: "POST",
url: "http://localhost:5889/MobileEcomm/Service1.svc/validateLogin/"+EmailID+"/"+encodeURIComponent(Password),
crossDomain: true,
success: function (data) {
alert(JSON.stringify(data));
alert("Login Sucessfull!!!");
window.location = "viewOrders.html";
// do something with server response data
},
error: function (err) {
// handle your error logic here
alert("Error");
}
});
我的密码字符串是:pass@#
我的c#方法结构:
public string validateLogin(string Email, string Password)
{
return Password;
}
当我在c#中获取密码参数时,如下:
pass@
当我发出警报时
encodeURIComponent(Password)
其:
pass%40%23
为什么我在 C# 方法中没有得到与密码参数相同的结果(pass%40%23)???
请帮助我。
最佳答案
如果您在 IIS+ASP.Net/WCF 之上托管 WCF 数据服务,那么您可能会发现某些字符包含在实体键中时会导致服务器抛出异常。结果是 400 Bad Request 或 404 Not Found。在 VS 2010 RC 中,您可以将服务器配置为支持这些字符,但首先让我们看看哪些字符被视为“特殊”:
%,&,*,:,<,>,+,#,/, ?,\
如果在实体的字符串键内使用上述任何字符,则无论您是否转义 Uri,查询该实体都将导致错误。
并且您在 URL 中使用了 #,这就是它无法提供正确结果的原因。
在 MSDN 博客上查看此链接以获取解决方案
您可能还想查看此链接,它将回答您为什么获得 %40%23 作为值的问题的第二部分。
关于javascript - url 编码组件未进入字符串服务器端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27098851/