首先,确保您已将您的类标记[ScriptService]
为允许通过 AJAX 调用它。就像是:
[ScriptService] //<-- Important
public class WebService : System.Web.Services.WebService
{
[ScriptMethod] //<-- WebMethod is fine here too
public string[] MyMethod()
{
return new[] {"fdsf", "gfdgdfgf"};
}
}
然后您可以直接使用 jQuery读取结果,因为无需解析任何内容:
$(document).ready(function() {
$.ajax({
type: "POST",
url: "WebService.asmx/MyMethod",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
// msg.d will be your array with 2 strings
}
});
});
另一种方法是仅包含对以下内容的引用:
<script src="WebService.asmx/js" type="text/javascript"></script>
这将生成代理类以允许您直接调用 Web 方法。例如:
WebService.MyMethod(onComplete, onError);
该onComplete
函数将接收一个带有 Web 服务调用结果的参数,在您的情况下是一个包含 2 个字符串的 Javascript 数组。在我看来,这是一个比使用 jQuery 并担心 URL 和 HTTP 有效负载更简单的解决方案。