1

この質問は、オートコンプリートが機能しないという別の質問を参照しています。その問題はまだ私のコードにありますが、私はこれを別の方法で行うことを考えました。別のjavascript関数からWebサービスを呼び出し、サービスから返された値をこのオートコンプリート関数に渡すことを考えています。これは、このjquery関数にダミー値を渡そうとしたときと同じです。Webサービスを呼び出していないかどうかわかりません。

今、私は自分のサービスを呼び出してリクエストを取得するための別の関数を作成しました-

        function SendRequest() 
    {
    debugger;
        SearchIssues.GetServerResponse(document.getElementById('ctl00_ContentPlaceHolder1_txtIssueNo').value, OnComplete, OnError, OnTimeOut);
    }
    function OnComplete(arg)
    {
        alert(arg);
    }
    function OnTimeOut(arg)
    {
        alert("timeOut has occured");
    }
    function OnError(arg)
    {
        alert("error has occured: " + arg._message);
    }

スクリプトマネージャーのタグに、Webサービスの参照を追加しました-

<asp:ScriptManager ID="ScriptManager1" runat="server">
        <Services>
            <asp:ServiceReference Path="~/SearchIssues.asmx" />
        </Services>
    </asp:ScriptManager>

オートコンプリート関数を次のように更新しました-

 $(function() {
   debugger;
        $(".tb").autocomplete({
            source: ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"]  });});

ここでは、正常に動作しているソースにダミーデータを渡しました。

私のWebサービスの署名は次のとおりです-

    [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public List<string> GetCompletionList(string prefixText)
        {....
}

しかし、それでも私のWebサービスを呼び出さず、javascriptエラーを次のように返します-

SearchIssuesは未定義です

助けてくださいありがとう

ここに画像の説明を入力してください

4

2 に答える 2

0

1>呼び出している間は完全な名前空間が必要だと思います

 NameSpace.SearchIssues.GetServerResponse(document.getElementById('ctl00_ContentPlaceHolder1_txtIssueNo').value, OnComplete, OnError, OnTimeOut)

2>サービスクラスには[ScriptService]属性が必要です。

3>サービスの相対URLをテストします

"〜/ SearchIssues.asmx"

于 2012-08-03T11:49:19.290 に答える
0

これは私のために働いた

 [WebMethod]
            public static Array GetCompletionList(string code)
    {
    .....your code
    }


 $.ajax({
                type: "POST",
                url: "CompletionList.aspx/GetCompletionList",
                data: '{"code1":"' +code1 + '"}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (c2) {
                   ....your code
                    });

});
于 2012-08-03T14:12:36.040 に答える