【发布时间】:2014-09-14 16:56:21
【问题描述】:
我有一个 dnn 模块,我正在尝试在页面中进行 ajax 调用。 我的客户代码是:
$.ajax({
type: "POST",
url: "/DesktopModules/DMUI/Controls/Project/ProjectDrillingMapsView.ascx/GetMarkerList",
dataType: "json"
})
.done(function (data) {
var list = data;
$.each(list, function (index, item) {
alert(item);
});
})
.fail(function (xhr, textstatus, errorthrown) {
alert('Error:' + errorthrown + ', textstatus:' + textstatus);
});
服务器端我有这个:
[WebMethod]
public string GetMarkerList()
{
string output = null;
List<Marker> markerList = new List<Marker>();
//My main query where I get a list of Objects
Expression<Func<DomainModel.Drilling, bool>> criteria = null;
criteria = (d => d.ProjectId == this.SelectedProjectId && d.XCoordinate != 0 && d.YCoordinate != 0);
_dpList = _drillingSrv.GetDrillingList(criteria, d => d.DrillingCode);
foreach (DomainModel.Drilling dr in _dpList)
{
Marker marker = new Marker();
marker.latitude = dr.GMapsLatitude.Value;
marker.longitude = dr.GMapsLongitude.Value;
marker.code = dr.DrillingCode;
marker.depth = dr.Depth.Value;
markerList.Add(marker);
}
JavaScriptSerializer jss = new JavaScriptSerializer();
output = jss.Serialize(markerList);
return output;
}
起初我收到内部服务器错误 500。 然后我进入了我的 web.config 并做到了:https://stackoverflow.com/a/2169847/1737287
现在我收到了 Not Found 错误 404。 我很好奇我可能做错了什么......
【问题讨论】:
-
您可能需要将该 Ajax 调用的路径添加到 DNN 的 URL 处理规则中,以使其忽略该 URL 并让它让 .NET 处理请求。
-
@ChrisHammond 你能链接到一些关于如何做到这一点的文档吗?我最终做了一个解决方法。我根本没有使用 ajax 调用。我用 runat="server" 创建了一个隐藏的 div,在预渲染时我调用 GetMarkerList 将输出写入该 div。它得到了相同的结果,我“躲过了”ajax 调用问题。但我还是想知道怎么了……
标签: jquery .net ajax dotnetnuke