2012-04-20 23 views
2
function CreateModalDialogWindow(urlPath) { 
$.ajax({ 
    url: '@Url.Action("Popup","Project")', 
    type: 'POST', 
    async: false, 
    success: function (data) { 
     debugger; 
     $('#dialog').html(data).dialog({ 
      autoOpen: true, 
      width: 400, 
      resizable: false, 
      modal: true 
     }); 
    }, 
    error: function(){ 
     alert('Error!'); 
    } 
}); 

return false; 

}jQuery的阿賈克斯後是不是調用操作方法

我想用ajax後調用一個actionmethod。下面是操作方法

[HttpPost] 
    public PartialViewResult Popup() 
    { 
     return PartialView("~/Views/Shared/Project/Popup.cshtml"); 
    } 

請讓我知道什麼是錯在上面的代碼。

+0

爲什麼有調試器;在成功功能?可能你也不想禁用緩存:cache:false – 2012-04-20 06:46:10

回答

3

可能有不同的原因,不會被調用的操作方法:你有一些JavaScript錯誤

  • 你永遠不調用CreateModalDialogWindow功能
  • 調用CreateModalDialogWindow中的點擊

    • 鏈接或表單提交,但您忘記了通過返回false來取消此按鈕的默認操作。如果你把一個斷點在你的控制器動作它通常應該打

      <script type="text/javascript"> 
      $(function() { 
          $.ajax({ 
           url: '@Url.Action("Popup", "Project")', 
           type: 'POST', 
           success: function (data) { 
            $('#dialog').html(data).dialog({ 
             autoOpen: true, 
             width: 400, 
             resizable: false, 
             modal: true 
            }); 
           } 
          }); 
      }); 
      </script> 
      

      現在:

    所以由文檔準備,看看它是否工作在第一調用此代碼開始。我建議你使用JavaScript調試工具,如FireBug,它將幫助你看到任何可能的javascript錯誤,並看到在AJAX請求期間發送的確切請求/響應。

    您還會注意到我已經刪除了async: false開關,因爲這會在執行此請求期間同步調用凍結Web瀏覽器的服務器,因此您不再執行AJAX。

  • +0

    Dimitrov,Action方法沒有被調用,即使我把這個代碼放在document.ready()中。但是相同的代碼在示例應用程序中正常工作。 – suman 2012-04-20 07:03:24

    +0

    Dimitrov,在firebug中調試後,我可以注意到它拋出了一個錯誤,如「405方法不允許」。我是否缺少url部分中的任何內容。 – suman 2012-04-20 07:20:41

    +0

    @Preben Huybrechts:謝謝Huybrechts。但它仍然不起作用。在螢火蟲我可以看到,它是拋出一個錯誤「405方法不允許」 – suman 2012-04-20 07:33:59