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));
}
用户被授权,只是好奇,我俯瞰什么?展望未来,我该如何测试这个来看看这个挂断是什么?
在此先感谢!
答
您试图从查询字符串中获取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
FireBug说什么?是否发送了任何请求? – 2009-11-15 12:19:52