2011-10-25 21 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

ビューを呼び出さないで、ビューをレンダリングする 'ViewResult'を返すことができるアクションを呼び出します。 – StuperUser

答えて

0

ポストを使用する代わりに、Getメソッドを使用すると思います。通話にデータオプションがないので、転記する必要はありません。私はそれがポストを得るために働くことを望む。

0

URLを指定している間に ".."を削除できますか?それはうまくいくはずです。ファイアウォールを使用して、URLがサーバーから要求されていることを確認することもできます。

+0

sory for this question私はそのビューにURLが割り当てられているかどうかを確認することは知らない。どのようにチェックできるか? –

+2

@RizawShahid:あなたのコントローラにブレークポイントを置き、リクエストが少なくともサーバに送信されているかどうかを確認します。 –

0

下位レベルの$ .ajax関数ではなく、jQueryの$ .getを使用します。あなたは、この理由で投稿ではなくhttp GETを実行したいと考えています。

このような何か試してみてください:

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

jQuery Get

も..私はあなたのURL内のハッシュ(#)を持って気づきました。あなたはこれをエンコードする必要がありますか、それは404を返すでしょう。

関連する問題