0

以下のようなWebサービスメソッドがあります。

 <WebMethod()> _
    Public Function TravelMeansList(ByVal prefix As String) As List(Of HRM_travellingMeans)
        Dim ctx As New HRMEntities
        Dim query = From c In ctx.HRM_travellingMeans Where c.name.ToUpper.StartsWith(prefix) Select c

        If query.Count > 0 Then
            Return query.ToList()
        Else
            Return Nothing
        End If

    End Function

そして私のスクリプトは以下のように

<script type="text/javascript">
     $(document).ready(function () {

         $("#<%=travelmeansTextBox.ClientID %>").autocomplete({


             source: function (request, response) {
                 $.ajax({
                     url: '<%=ResolveUrl("../../services/ApplicationService.asmx/TravelMeansList") %>',
                     data: "{ 'prefix': '" + request.term + "'}",
                     dataType: "json",
                     type: "POST",
                     contentType: "application/json; charset=utf-8",
                     dataFilter: function (data) { return data; },
                     success: function (data) {
                         response($.map(data.d, function (item) {
                             return Json({

                                    value: item.name
                             })
                         }))
                     },
                     error: function (response) {
                         alert(response.responseText);
                     },
                     failure: function (response) {
                         alert(response.responseText);
                     }
                 });
             },
             select: function (e, i) {

             },
             minLength: 1
         });




     });
    </script>

私の問題は、テキストボックスに文字を入力しようとすると、このエラーが発生することです。

System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o、StringBuilder sb、 Int32深さ、ハッシュテーブルobjectsInUse、SerializationFormat serializationFormat、MemberInfo currentMember)\ r \ n at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object o、StringBuilder sb、Int32depth、ハッシュテーブルobjectsInUse、SerializationFormat serializationFormat、MemberInfo currentMember)\ r \ n at System.Web.Script.Serialization.JavaScriptSerializer.SerializeCustomObject(Object o、StringBuilder sb、Int32depth、Hashtable objectsInUse、SerializationFormat serializationFormat)\ r \ natSystem.Web.Script.Serialization.JavaScriptSerializer。SerializeValueInternal(Object o、StringBuilder sb、Int32depth、Hashtable objectsInUse、SerializationFormat serializationFormat、MemberInfo currentMember)\ r \ n at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object o、StringBuilder sb、Int32depth、Hashtable objectsInUse、SerializationFormat serializationFormat、MemberInfo currentMember)\ r \ n at System.Web.Script.Serialization.JavaScriptSerializer.SerializeEnumerable ..... ..SerializeEnumerable.....。SerializeEnumerable.....。

私は何を間違っているのですか。

4

1 に答える 1

1

問題は、Entity Framework オブジェクトの JSON シリアル化にある可能性があります。この記事を参照してください。

http://mytechworld.officeacuity.com/index.php/2010/02/serializing-entity-framework-objects-into-json-using-asp-net-mvc/

この記事の著者は、ASP.NET MVC を使用している場合は JSONResult オブジェクトを使用することを提案していますが、それが jQuery Autocomplete とどの程度うまく機能するかはわかりません。

于 2012-08-04T09:58:53.327 に答える