2009-11-15 4 views
0

J'ai une liste de tâches que je permets à un utilisateur de trier, actuellement je travaille sur le glisser/déposer d'un conteneur à l'autre.jQuery ajax post ne pas appeler méthode dans mon contrôleur

Alors que le glisser/déposer fonctionne, je ne peux pas déclencher la publication jQuery. Pas sûr de ce qui se passe ici.

Voici ce que je travaille actuellement avec mon 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> 

Mes méthodes d'action du contrôleur ressemble à:

[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)); 
    } 

L'utilisateur est autorisé, curieux de ce que je donne sur ? À l'avenir, comment puis-je tester cela pour voir ce que le hang-up est?

Merci d'avance!

+0

Que dit FireBug? Une demande est-elle envoyée? –

Répondre

4

Vous essayez d'extraire le taskID et le stageID de la chaîne de requête, mais vous les envoyez en tant que POST, ce qui signifie qu'ils sont dans le corps du message. Changez votre signature de méthode à ceci:

public ActionResult EditStage(int taskID, intstageID) 

et d'accéder aux paramètres à la place.

Ou, changez simplement la méthode JQuery AJAX en GET et votre action pour autoriser gets.

Ou, ajoutez les valeurs à l'URL comme,

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

et utiliser cette variable url dans l'appel AJAX avec aucune donnée.

+0

Utilisez la première méthode mentionnée par Josh, changez la signature de la méthode et utilisez les variables. – Chaddeus