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()" />
このボタンは、自動化された textbox1 とラベル コードが生成されるのと同じ場所にあります。
私の質問は、何が間違っていて、どうすれば修正できるのでしょうか?
説明が必要な場合は、以下に投稿してください。
よろしく
編集:はい、Webサービスでこの行をコメントアウトしました
"[System.Web.Script.Services.ScriptService]"