0

動作しないように見える次のスクリプトがあります。aspxページは、コメントアウトされた以下のスクリプトのjsonと同様のjsonを返します。そのjsonを配列としてソースに直接貼り付けると、完全に機能します。

しかし、以下のスクリプトを使用しようとすると、エラーメッセージなどが表示されず、オートコンプリートフィールドに入力しても何も起こりません。

$(document).ready(function(){
    $('#button').click(function() {
        alert($("#txtAllowSearchID").val()); 
    }); 

    //var $local_source = [ {id:0,value:"c++"}, {id:1,value:"java"}, {id:2,value:"php"}, {id:3,value:"coldfusion"}, {id:4,value:"javascript"}, {id:5,value:"asp"}, {id:6,value:"ruby"} ]; 

    $("#txtAllowSearch").autocomplete({
        source: function(request, response) {
            $.ajax({
                type: "POST",
                url: "test_array.aspx",
                data: "{'prefixText': '" + $('#txtAllowSearch').val() + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(data) {
                    response(data.d);
                },
                failure: function(errMsg) {
                    $('#errMessage').text(errMsg);
                }
            });
        },
        select: function (event, ui) {
            $("#txtAllowSearch").val(ui.item.value); // display the selected text
            $("#txtAllowSearchID").val(ui.item.id); // save selected id to hidden input
        }
    });
});

編集:問題はaspxページにあると思います:

objSQLCommand = New SqlCommand("select id, value from table1 where value like '%@prefixText%'", objSQLConnection)
objSQLCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 255).Value = "ing"
4

2 に答える 2

2

Webサービスへのajax呼び出しのソースを作成する必要があると思います。これは、あなたの場合はページメソッドのようです。したがって、コードビハインドページに関数がある場合は、次のようになります。

public static List<string> GetData(string prefixText){ }

名前空間[WebMethod]からそのメソッドを装飾する必要があります。System.Web.Services

したがって、最終的には次のようになります。

using System.Web.Services;

..。

[WebMethod()]
public static List<string> GetData(string prefixText){ }

HTH

編集:また、ソースに対して次のように見えるようにajax呼び出しを更新する必要があります:

source: 'test_array.aspx/GetData'
于 2011-01-27T14:24:58.223 に答える
1

問題はソース関数にあるように見えます。ajax呼び出しを行うと、非同期で行われます。そのため、関数はajax呼び出しを開始して続行し、ソースに対して何も返しません。

これは、ロード画面を実行しているときに発見しました。ajax呼び出しの後にロード画面を閉じると、ロード画面が表示されません。正しく表示および非表示にするには、ajax呼び出しの成功イベントとエラーイベント内に移動する必要がありました。

ソースはURLへの参照である必要があります

source: "test_array.aspx",

ドキュメントから:

データソースは、source-optionの単純なURLを介して指定されたJSONデータを返すサーバーサイドスクリプトです。

于 2011-01-27T14:13:56.033 に答える