0

此 jQuery 调用不断失败,并显示以下错误消息:"Cannot convert object of type 'System.String' to type 'System.Collections.Generic.IDictionary2[System.String,System.Object]'"`

jQuery:

$('input, select').blur(function ()
                {
                    var categoryId = $('#IncidentCategoryEnhancedDropDownList').val();
                    var latitude = $('#LatitudeHidden').val();
                    var longitude = $('#LongitudeHidden').val();
                    var dateTime = $('#DateEnhancedTextBox').val();

                    if (categoryId == '--Select--')
                    {
                        return;
                    }

                    if (!latitude.length || !longitude.length)
                    {
                        return;
                    }

                    if (!dateTime.length)
                    {
                        return;
                    }

                    $.ajax({
                        type: "POST",
                        url: "ReportIncident.aspx/GetIncidentsNearBy",
                        data: $.toJSON('{categoryId:"' + categoryId + '",latitude:' + latitude + ',longitude:' + longitude + ',dateTime:"' + dateTime + '"}'),
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (msg)
                        {
                            console.log(msg.d);
                            // $("#Result").text(msg.d);
                        }

                    });
                });

页面方法:

 [WebMethod]
        public static IList<IncidentDTO> GetIncidentsNearBy(int categoryId, float latitude, float longitude, DateTime dateTime)
        {
            var incidents = new MendixIncidentDAO().GetIncidents()
                .Where(i => i.IncidentTypeId == categoryId)
                .Where(i => i.Date >= dateTime.AddHours(-1) && i.Date <= dateTime.AddHours(1))
                .Where(
                    i =>
                    SpatialHelpers.DistanceBetweenPlaces((double) longitude, (double) latitude, (double) i.Longitude,
                                                         (double) i.Latitude) < 1)
                .Select(
                    i =>
                    new IncidentDTO
                        {
                            Id = i.IncidentId,
                            IncidentCategory = i.IncidentType,
                            Address = i.Address,
                            FormattedDate = i.FormattedDate
                        });
            return incidents.ToList();
        }
4

1 回答 1

0

问题出在 Ajax 调用中,特别是 data:$.toJSON(...) 部分。下面的代码现在可以完美运行。

$.ajax({
                        type: "POST",
                        url: "ReportIncident.aspx/GetIncidentsNearBy",
                        data:"{categoryId:" + categoryId+",latitude:"+latitude+",longitude:"+longitude+",dateTime:'"+dateTime+ "'}", 
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (msg)
                        {
                            console.log(msg.d);                           
                            $("#Result").text(msg.d);
                        }
                    });
于 2012-09-18T21:09:25.993 回答