2014-09-14 4 views
0

У меня есть модуль dnn, и я пытаюсь сделать ajax-вызов на странице. Моего клиента код:Ajax Call не может найти webmethod

$.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

Теперь я получаю не найдена ошибка 404. Я интересно, что я могу делать неправильно ...

+0

Вероятно, вам нужно добавить путь к этому вызову Ajax в правила обработки URL-адресов для DNN, чтобы заставить его игнорировать этот URL-адрес и разрешить .NET обрабатывать запрос. –

+0

@ChrisHammond Можете ли вы ссылаться на некоторую документацию о том, как это сделать? На данный момент я решил сделать обходной путь. Я вообще не использовал вызов ajax. Я создал скрытый div с runat = "server" и на prerender, который я назвал GetMarkerList, чтобы написать вывод в этот div. Это дает мне тот же результат, и я «уклонился» от проблемы вызова ajax. Но я все равно хотел бы знать, что случилось ... –

ответ

0

«Сообщение об ошибке 404 или не найдено - это стандартный ответный код HTTP, указывающий, что клиент смог связаться с данным сервером, но сервер не смог найти запрошенное».

Укажите полный URL-адрес в вызове ajax.