jQuery ajax后调用方法在我的控制器

jQuery ajax后调用方法在我的控制器

问题描述:

我有一个任务列表,我允许用户排序​​,目前我正在从一个容器拖放到另一个。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

您试图从查询字符串中获取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