2016-01-13 56 views
0

我有一個簡單的web應用程序,它有一個HouseUnitController,其操作返回JSONResult在ASP.NET中從JSON返回的未定義數據

public JsonResult GetHouseUnits() 
    { 
     var houseUnits = db.HouseUnits.Include(h => h.HouseModel).Include(h => h.Site) 
      .Select(h => new { 
        h.Block, 
        h.Lot, 
        h.HouseModel.ModelName, 
        h.Site.SiteName, 
        h.IsSold, 
        h.FloorArea, 
        h.LotArea, 
        h.Price 
     }); 
     return Json(houseUnits, JsonRequestBehavior.AllowGet); 
    } 

在我看來,我有:

<button data-retrieve data-view="tree" data-service = "./GetHouseUnits" data-container="#view" class="btn btn-warning btn-sm" > <span class="glyphicon glyphicon-arrow-down"></span>&nbsp; &nbsp;<strong>Load Data </strong>&nbsp;</button> 

當我瀏覽localhost:62516/HouseUnits/GetHouseUnits,我可以看到返回的JSON結果。但是,當我點擊按鈕時,我沒有收到任何數據。這裏是正在爲其他HTML頁面我的腳本文件:

$('button[data-retrieve]').click(function(){ 
    var treeHeaderLimit = 2;  
    var APIurl = $(this).data('service'); 
    var view = $(this).data("view"); 
    var dataCount = 5; 
    var selId = $(this).data("container"); 

    createView(APIurl, selId, view, dataCount, treeHeaderLimit); 

}); 

我有一種感覺,它是與在按鈕的URL,因爲它似乎是從AJAX返回的數據是undefined

function createView(APIurl, selId, viewType, dataCount, treeHeaderLimit){ 
$.ajax({ 
    url: APIurl, 
    type: "GET", 
    contentType: "application/json", 
    dataType: "json", //This is used to avoid `No-Access-Control-Allow-Origin` header error 
    success:function(data){ 

     if (viewType=="tree"){ 
      generateTree(data, selId, dataCount, treeHeaderLimit) 
     } else{ 
      generateTable(data, selId, dataCount); 
     } 

    }, 
    error: function (err) { 
     alert(err); 
    } 
}); 

} 

有人可以幫我解決這個問題嗎?我試過./GetHouseUnits../GetHouseUnits,但它不起作用。謝謝。

+1

嘗試使用Url.Action()代替靜態URL的 –

+0

您是否爲數據服務屬性嘗試了'HouseUnits/GetHouseUnits'? – Sunil

+0

謝謝@FrebinFrancis。發佈這個答案,我可以接受它。 – Cyval

回答

2

在ASP.NET MVC

,而不是data-service = "./GetHouseUnits"使用Url.Action()方法替換您的靜態URL的"@Url.Action("{action}","{controller}")"

希望這有助於

0

的網址應在../Controller-Name/Action-Name.格式 將data-service="./GetHouseUnits"更改爲data-service="../Controller-Name/Action-Name"。 爲了確保您使用的是正確的網址,只需在動作中放置一個斷點即可。 如果您使用的是正確的網址,則會顯示相應的操作以進行迭代,如果不使用該操作,則網址錯誤。

+0

試過那個,沒有工作。 – Cyval

+0

您是否檢查過斷點方法 – anand