2013-08-28 31 views
1

我在爲Ajax閱讀器/ JSON而努力。每次我想我理解它,似乎我都沒有。 請問,任何人都可以解釋這背後的邏輯?HttpRoutes - 它們是如何工作的?

我得到這個控制器:

public class ServiceController : DnnApiController 
    { 
     [AllowAnonymous] 
     [HttpGet] 
     public HttpResponseMessage GetAllItems(int moduleId) 
     { 
      MyProjectController controller = new MyProjectController(); 
      IEnumerable<ItemInfo> items = controller.GetAllItems(moduleId); 
      return Request.CreateResponse(HttpStatusCode.OK, items); 
     } 
    } 

我得到這個Routemapper:

public class RouteMapper : IServiceRouteMapper 
    { 
     public void RegisterRoutes(IMapRoute mapRouteManager) 
     { 
      mapRouteManager.MapHttpRoute("MyProject", 
             "default", 
             "{controller}/{action}", 
             new[] { "MyCompany.MyProject.Services" }); 
     } 
    } 

在我什麼網址可以讀取$阿賈克斯()和數據是什麼網址我展示數據在瀏覽器中?

Thanx提前!

ASLE :)

回答

2

服務層DNN7模塊這是我要做的事(注:這將只與DNN6.2及以上工作);

  1. 在View.ascx.cs添加

    protected override void OnInit(EventArgs e) 
    { 
        base.OnInit(e); 
        ServicesFramework.Instance.RequestAjaxScriptSupport(); 
        ServicesFramework.Instance.RequestAjaxAntiForgerySupport(); 
        jQuery.RequestDnnPluginsRegistration(); 
    } 
    

    這確保jQuery和所需DNN AJAX插件相加。

  2. 啓動在View.ascx服務框架jQuery插件這樣的javascript腳本標籤內(SO不會允許我將它們包括)

var modId = <%=ModuleId %>;  
var sf = $.ServicesFramework(modId); 
  1. 現在在單獨的JavaScript文件中或在view.ascx控件中添加ajax函數
function getAllItems(){ 
    $.ajax({ 
    type:"GET", 
    url:sf.getServiceRoot("MyProject")+"Service/GetAllItems", 
    beforeSend:sf.setModuleHeaders, 
    data:{moduleId:modId}, 
    cache:false 
    }).done(function(data){ 
    alert("Success!"); 
    }).fail(function(){ 
    alert("Crashed!"); 
    }).always(function(){ 
    //something you want done whether passed or failed 
    //like hide progress bar, ajax spinner etc. 
    }); 
} 

DNN的jQuery插件將建立網址將與此類似(注:142僅僅是用於說明目的,並會與實際模塊ID替換)

/DesktopModules/MyProject的/ API/Service/GetAllItems?moduleId = 142

+0

Thanx!正是我在找什麼。燦爛的M.Machua! :D –

+1

@AsleG,很高興聽到這爲你工作。請繼續並將其標記爲答案,否則您的問題仍將標記爲未答覆。乾杯。 –

+0

確實如此。回答是。 :) 現在應該標記。 –

相關問題