2013-08-20 51 views
0

參考意見阿賈克斯成功函數內部:如何從POST ajax響應中捕獲特定值?

function CreateProjectTree(sc) 
{ 
    $.ajax({ 
     type: "POST", 
     url: "../api/projects/SearchProjects", 
     data: sc, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(data) 
     { 
      if ($(data).length === 1) 
      { 
       window.location.replace("../ViewProjectDetails.aspx?ProjectId=" + //here's where I need to get the id; 
      } 
      else 
      { 
       buildTree(data); 
      } 
     }, 
    }); 
} 

這是控制器類似的帖子:

public class ProjectsController : ApiController 
{ 
    public List<Item> SearchProjects(GBLProjectSearchCriteria searchCriteria) 
    { 
     var ProjectSearchResult = new ProjectSearchResultController(); 
     searchCriteria.SearchType = "P"; 
     searchCriteria.QueryString = "?ProjectId="; 
     var GBLProjectSearchResultListData = ProjectSearchResult.GetProjectSearchResultList(searchCriteria); 
     var projectList = (from GBLProjectSearchResult item in GBLProjectSearchResultListData 
          select new Item 
          { 
           Id = item.Id, 
           Title = item.Title, 
           Url = item.NavigateUrl + item.QueryString 
          }).ToList(); 

     foreach (var project in projectList) 
     { 
      //seasons 
      project.Items = new List<Item>(); 
      var SeasonSearchResult = new ProjectSearchResultController(); 
      searchCriteria.Id = project.Id; 
      searchCriteria.SearchType = "S"; 
      searchCriteria.QueryString = "?ProjectId=" + project.Id + "&SeasonId="; 
      var GBLSeasonSearchResultListData = SeasonSearchResult.GetProjectSearchResultList(searchCriteria); 
      foreach (var season in from GBLProjectSearchResult item in GBLSeasonSearchResultListData 
            select new Item 
            { 
             Id = item.Id, 
             Title = item.Title, 
             Url = item.NavigateUrl + item.QueryString 
            }) 
      { 
       project.Items.Add(season); 
       project.HasChildren = (project.Items.Count > 0); 
      } 
      foreach (var season in project.Items) 
      { 
       //episodes 
       season.Items = new List<Item>(); 
       var episodeSearchResult = new ProjectSearchResultController(); 
       searchCriteria.Id = season.Id; 
       searchCriteria.SearchType = "E"; 
       searchCriteria.QueryString = "?ProjectId=" + project.Id + "&SeasonId=" + season.Id + "&EpisodeId="; 
       var GBLEpisodeSearchResultListData = episodeSearchResult.GetProjectSearchResultList(searchCriteria); 
       foreach (GBLProjectSearchResult item in GBLEpisodeSearchResultListData) 
       { 
        var episode = new Item 
        { 
         Id = item.Id, 
         Title = item.Title, 
         Url = item.NavigateUrl + item.QueryString 
        }; 
        season.Items.Add(episode); 
        season.HasChildren = (season.Items.Count > 0); 
       } 
      } 
     } 
     return projectList; 
    } 

    public class Item 
    { 
     readonly string take2Root = ConfigurationManager.AppSettings["Take2Root"]; 
     private string url; 

     public int Id 
     { 
      get; 
      set; 
     } 

     public string Title 
     { 
      get; 
      set; 
     } 

     public bool HasChildren 
     { 
      get; 
      set; 
     } 

     public List<Item> Items 
     { 
      get; 
      set; 
     } 

     public string Url 
     { 
      get 
      { 
       return url; 
      } 
      set 
      { 
       url = take2Root + value.Replace("..", ""); 
      } 
     } 
    } 
} 

我需要通過這個返回的父節點的ID控制器。

我知道如何使用GET請求,但是,我必須在這裏執行POST,但我不確定如何提取ajax成功函數中的ID。

有人能幫我一下嗎?

謝謝!

回答

0

在您的if ($(data).length === 1)聲明中,您可以添加debugger;(或設置斷點),然後使用chrome的開發人員工具檢查數據對象。你後面的id將會是類似data.objects[0].id