2009-11-15 61 views
0

我有一個任務列表,我允許用戶排序​​,目前我正在從一個容器拖放到另一個。jQuery ajax後調用方法在我的控制器

雖然拖/放工程,我無法得到jQuery的帖子發射。不知道這裏發生了什麼。

以下是我目前正在與我的jQuery的工作:

<script type="text/javascript"> 
    $(function() { 
     $(".sortable").sortable({ 
      connectWith: '.connectedSortable', 
      cursor: 'move', 
      items: '.queueItem', 
      receive: function(event, ui) { 
       //Extract column num from current div id 
       var stageId = $(this).attr("id").replace("stage", ""); 
       var taskId = $(ui.item).attr("id").replace("task", ""); 
       $.ajax({ 
        url: '/Task/EditStage', 
        type: 'POST', 
        data: { 'taskId': taskId, 'stageId': stageId } 
       }); 
      } 
     }).disableSelection(); 
    });  
</script> 

我控制器操作方法是這樣的:

[AcceptVerbs(HttpVerbs.Post), Authorize] 
    public ActionResult EditStage() 
    { 
     Task task = this.TaskRepository.GetTask(
      int.Parse(this.Request.QueryString["taskId"])); 
     Stage stage = this.StageRepository.GetStage(
      this.Request.QueryString["stageId"]); 

     task.StageId = stage.StageId; 

     this.TaskCommentRepository.Save(); 

     return this.Content(string.Format("The stage for Task {0} has been changed to {1}", task.TaskId, stage.Name)); 
    } 

用戶被授權,只是好奇,我俯瞰什麼?展望未來,我該如何測試這個來看看這個掛斷是什麼?

在此先感謝!

+0

FireBug說什麼?是否發送了任何請求? – 2009-11-15 12:19:52

回答

4

您試圖從查詢字符串中獲取taskID和stageID,但是您將它們作爲POST發送,這意味着它們位於消息正文中。將方法簽名更改爲:

public ActionResult EditStage(int taskID, intstageID) 

並改爲訪問參數。或者,只需將JQuery AJAX方法更改爲GET,然後執行允許獲取的操作即可。

或者,值追加到URL一樣,

var url = '/Task/EditStage?taskID=' + taskID + "&instageID=" + instaveID; 

,並使用URL變量在AJAX調用沒有數據。

+0

使用Josh提到的第一種方法,更改方法簽名並使用變量。 – Chaddeus 2009-11-16 01:49:26