正在尝试使用 AJAX 调用此 Web 服务...
网络服务如下
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
public String countryCode(String input)
{
StringBuilder strings = new StringBuilder("", 10000);
String text = System.IO.File.ReadAllText(Server.MapPath("countryCodes.txt"));
String[] countries = Regex.Split(text, "#");
var valids = new List<String>();
foreach (String c in countries)
{
if (c.ToUpper().StartsWith(input.ToUpper()) || c.ToLower().StartsWith(input.ToLower()))
{
if (input == "")
{
break;
}
valids.Add(c);
}
}
return (valids.Any()) ? String.Join(" ", valids) : "No results found for your input!";
}
}
我已经设置了一个空的 Web 表单,并像这样在脚本管理器中调用了服务引用
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/WebService1.asmx" />
</Services>
</asp:ScriptManager>
我的javascript如下
<script type= "text/javascript">
var a = wRequest.set_userContext("user's context");
var onClick = function () {
CountryCodes.WebService1.countryCode($get("TextBox1"), onSucess, onFailed);
}
var onSuccess = function (result) {
$get("Label3").innerHTML = result;
}
var onFailed = function (result) {
$get("Label3").innerHTML = "No results found for your input!";
}
</script>
现在我的理解是,当按下按钮时,它将接受TextBox1's
值的输入并将其用作我的WebService.countryCode
方法的参数,因此如果成功,它将设置label 3
为方法的结果,如果不成功,它将设置label 3
到提供的字符串...
然而这并没有发生......事实上,当我点击我的按钮时没有任何反应,为了清楚起见,这是我的按钮声明......
<input type="button" value="Find Country Codes " onclick ="onClick()" />
此按钮与自动生成文本框1 和标签代码的位置相同。
所以我的问题是,我做错了什么,如何解决?
任何需要澄清的地方都可以在下面发布,谢谢。
问候
编辑:是的,我已经在网络服务中注释掉了这一行
"[System.Web.Script.Services.ScriptService]"