2011-10-25 42 views
1

我想用ASP.net MVC2.0调用使用AJAX调用的视图,但它不能正常工作。这是一个Ajax方法如何使用AJAX调用查看

$.ajax({ 
      type: 'POST', 
      url: '../Inventoryhealth/IHView?mac=' + val + '&name=' + val2 + '#fragment-3', 
      //url: '../Chart/CreateChart2?chartType=Column&a=null', 
      success: function (result) { 
      var res = result; 
      if (res != null && res == "1") 
       alert('System information can\'t be retrieved'); 
      } 
     }); 

,但如果我用这个正常工作

location.href = "../Inventoryhealth/IHView?mac=" + val + "&name=" + val2 + "#fragment-3"; 

这是视图代码

public ActionResult IHView(String mac, string name) 
    { 
      try 
      { 
       ViewData["PollTime"] = new ClientConfigurationService().getPollTime() * 60000; 
       SystemInventoryService sis = new SystemInventoryService(); 
       SystemInformation systemInfo = new SystemInformation(); 
       systemInfo = sis.getSystemInventory(mac); 
       systemInfo.ChartRefreshInterval = getInterval(); 
       systemInfo.OName = name; 
       bool MoreCores = true; 
       if (Convert.ToInt16(systemInfo.NumberOfCores) < 2) 
       { 
        systemInfo.Core1UsageDetail = "0"; 
        systemInfo.Core2UsageDetail = "0"; 
        MoreCores = false; 
       } 

       Add(systemInfo.ProcessorLoadPercentage, systemInfo.MemoryTotalVirtualMemorySize, systemInfo.MemoryFreeVirtualMemory, systemInfo.DrivesSize, systemInfo.DrivesTotalFreeSpace, MoreCores, systemInfo.Core1UsageDetail, systemInfo.Core2UsageDetail); 

      var AC = new ActiveClient(); 
      AC.ClientMac = mac; 
      if (db.ActiveClients.Count() > 0) 
      { 
       db.DeleteObject(db.ActiveClients.First()); 
      } 
      db.AddToActiveClients(AC); 
      db.SaveChanges(); 

      if (systemInfo != null) 
      { 
       return View(systemInfo); 
      } 
      else 
      { 
       // If Healh and status can't be retrieved      
       // Response.Redirect("../Inventoryhealth/InventoryIndex?error=1"); 
       return Content("1"); 
      } 

     } 

任何想法?

+0

当您在服务器响应中使用FireBug查看时,它看起来如何? –

+0

您不会调用Views,您可以调用可以返回呈现视图的ViewResult的操作。 – StuperUser

回答

0

我认为不是使用Post,而是使用Get方法。通话中没有数据选项,因此这意味着您不需要发帖。我希望它能够在改变Post方面得到。

0

您可以尝试在指定URL时删除“..”。这应该工作得很好。您也可以使用萤火虫来查看服务器要求的网址。

+0

sory对于这个问题我不知道检查分配了url的视图与否。如何检查? –

+2

@RizawShahid:在您的控制器中放置一个断点,并查看请求是否至少将其送至服务器。 –

0

使用jQuery的$ .get而不是较低级别的$ .ajax函数。你想执行一个http GET而不是这个原因的帖子。

尝试这样:

$.get('../Inventoryhealth/IHView?mac=' + val + '&name=' + val2 + '#fragment-3', function(data){ 
//do something on success 
alert(data); 
}); 

jQuery Get

还..我注意到你在你的网址(#)有一个哈希值。您需要对此进行网址编码,否则它将返回404。