2011-01-27 7 views
0

私はうまくいかないようなフォロースクリプトを持っています。 aspxページは、コメントアウトされたスクリプトのjsonに似たjsonを返します。そのjsonを配列としてソースに直接貼り付けると、完全に動作します。asp.netでオートコンプリートを作成しました

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

$(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 
     } 
    }); 
}); 

EDIT:

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

答えて

1

それが問題のように私には見えるソース関数であるかもしれない:私は問題はaspxページにあると思います。 ajax呼び出しを行うと、非同期で実行されます。したがって、この関数はajax呼び出しを開始し続け、ソースに対しては何も返しません。

私は画面の読み込み中にこれを発見しました。 ajax呼び出しの後にローディング画面のクローズを入れた場合、ローディング画面は表示されません。私はajaxコールの成功とエラーのイベントの中でそれを表示して正しく消えるように移動しなければなりませんでした。データソースが シンプルで指定JSONデータを返すサーバーサイドスクリプト 、ある

あなたのソースはちょうどdocumentationからURL

source: "test_array.aspx", 

への参照でなければなりませんsource-optionのURLです。

+0

私はちょうど上記のようにe-urlを使用すると、.aspxページがjsonデータを返す前に.aspxページに値を投稿するにはどうすればよいですか? – oshirowanen

+1

文字列を使用すると、オートコンプリートプラグインはその文字列がJSONデータを返すURLリソースを指していることを期待します。同じホスト上にあっても、別のホスト上にあっても構いません(JSONPを提供する必要があります)。リクエストパラメータ「term」がそのURLに追加されます。データそのものは、上記のローカルデータと同じ形式にすることができます。 - 実際に呼び出すURLは 'test_array.aspx?term = whateverityped'です – Josh

2

私はあなたの場合、ページメソッドであると思われるWebサービスへのajax呼び出しのソースを作る必要があると信じています。あなたは、このようなページを見て背後にあるコード内の関数を持っているのであれば:

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

あなたがSystem.Web.Services空間から[WebMethod]とその方法を飾るために必要があるでしょう。

だから、最終的には次のようになります。

using System.Web.Services; 

...

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

HTH

EDIT:また、あなたにはこのように見えるためにあなたのAJAX呼び出しを更新する必要があります出典:

source: 'test_array.aspx/GetData' 
関連する問題