我有一个简单的 .NET [asmx] Web 服务设置,如下所示:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]
public string Find(string stateAbbrev, string city, string name)
{
// Code
}
我从此调用此 Web 方法:
$.ajax({
type: "get",
contentType: "application/json; charset=utf-8",
cache: false,
url: "/webservice.asmx/Find",
data: { stateAbbrev: "'" + escape(self.selectedState()) + "'", city: "'" + escape(self.city()) + "'", name: "'" + escape(self.name()) + "'" },
dataType: "json",
success: function() { }
});
我已经尝试了上述 url/data 参数的几种变体。包括encodeURI、encodeURIComponent和escape。问题是在客户端编码的数据没有在服务器上正确处理。我的意思是,当我对查询字符串进行编码/转义时,我最终会收到这样的 HTTP GET 请求:
http://localhost/webservice.asmx/Find?stateAbbrev=''&city='MyCity%2527'&name=''
%2527 是一个转义字符。服务器处理这个城市名称实际上是“MyCity%2527”。
我是否需要在服务器本身上做任何事情,或者查询字符串的解码是否应该由 .NET 处理?我是否正确进行编码?
谢谢你,