2010-12-24 11 views
1

私は奇妙な問題を抱えています。私はasmx WebサービスでjQueryオートコンプリートを使用しようとしています。私のJavaScriptコードがあるとして:asmxの問題でjQueryオートコンプリート

$('#txtUsers').autocomplete('AjaxHandler.asmx/GetUserData', { 
    width: 320, 
    max: 5, 
    minChars: 3, 
    parse: function(data) { 
     var items = data.d; 
     var parsed = []; 
     for (var i = 0; i < items.length; i++) 
      parsed.push({ 
      data: [items[i]], 
      value: items[i], 
      result: [items[i]] 
     }); 
     return parsed; 
    } 
}); 

と私のWebサービスのコードは次のとおりです。

[WebService] 
[ScriptService] 
public class AjaxHandler : WebService 
{ 
    [WebMethod] 
    public List<UserData> GetUserData(string q) 
    { 
     //My code here..... 
    } 
} 

私のWebメソッドがオートコンプリートから呼び出されていないが。しかし、jQuery.ajaxから同じWebメソッドを呼び出そうとすると、正しく起動されます。どんな助け?

答えて

1

私はオートコンプリートがリクエストを受信するのを確認しましたが、サービスは投稿リクエストのみを受け入れます。だから、あなたもそれを見つけたことが分かります。

単純なHttpHandlerを使用し、newton json serializerを使用してjsonとしてデータを返すことをお勧めします。これは、Webサービスが 'ラップされた'データを返すためです。このような

dataType: "json", 

と解析:

List<UserData> items = GetUserDataItems(); 
string json = JsonConvert.SerializeObject(items); 

// retrun JSONクライアント

JSONにクライアントコードセットデータ型でも

へ: は、それは非常に単純なハンドラでなければなりません

parse: function (data) { 
    return $.map(data, function (row, i) { 
     return { 
      data: row, 
      value: row, 
      result: row 
     } 
    }); 
}, 
+0

私の問題はjsonデータではありません。私の問題は、Webサービスメソッドが$ .ajaxから完全に呼び出されている場所のオートコンプリートから呼び出されていないことです。 – Ashish

+0

メソッドがaotocompleteによって呼び出されていないことを確認してください。オートコンプリートが動作するときにデバッグサービスを試しましたか?オートコンプリートでデータを解析できないため、問題があるようです。しかしそれはちょうど間違っているかもしれないという示唆です。 –

+0

jsonを簡単に送信しようとすると、それは動作すると確信しています。 –

1

はい、私はこの問題にも立っています。 ScriptServiceもScriptMethodもオートコンプリートには役立ちません。最も簡単な回避策は、.asmx.ashxに変換し、JSONシリアライザの助けを借りてAJAXプラグインが期待する結果を返すように管理します。

+0

ありがとうございました。しかし、問題は を含むことによって解決されました> in web.config – Ashish

+0

@Ashish便利なコメントありがとうございました! – Dewfy

関連する問題