此jQuery调用使用以下错误消息继续失败:"Cannot convert object of type 'System.String' to type 'System.Collections.Generic.IDictionary
2 [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();
}
答案 0 :(得分:0)
问题出在Ajax调用中,特别是数据:$。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);
}
});