JQuery AJAX пост не вызывает метод в моем контроллере - PullRequest
0 голосов
/ 15 ноября 2009

У меня есть список задач, которые я разрешаю пользователю сортировать, в настоящее время я работаю над перетаскиванием из одного контейнера в другой.

Пока работает перетаскивание , я не могу запустить публикацию 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));
    }

Пользователь авторизован, просто интересно, что я пропускаю? В дальнейшем, как я могу проверить это, чтобы увидеть, что такое зависание?

Заранее спасибо!

1 Ответ

4 голосов
/ 15 ноября 2009

Вы пытаетесь получить taskID и stageID из строки запроса, но отправляете их как POST, что означает, что они находятся в теле сообщения. Измените подпись вашего метода на это:

public ActionResult EditStage(int taskID, intstageID)

и получите доступ к параметрам.

Или просто измените метод JQuery AJAX на GET, и ваше действие разрешит получение.

Или добавьте значения к URL, например,

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

и используйте эту переменную url в вызове AJAX без данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...