2013-02-12 4 views
2

J'ai une fonction jQuery qui est appelée lorsque le bouton "Soumettre" est cliqué:jQuery ajax message sur asp.net MVC2

function SubmitForm() { 
    var idList = []; 
    var list = $('#TableAdminPortfolio .CheckBoxProjects'); 
    list.each(function() { 
     var id = $(this).closest('td').children('.hiddenId').val(); // parseInt() 
     idList.push(id); 
    }); 

    $.ajax({ 
     url: $(this).href, 
     type: 'POST', 
     data: idList, 
     success: function (result) {alert('Successful');}, 
     error: function (result) {alert('Error');} 

    }); 
} 

Mon contrôleur ressemble à:

[Transaction] 
[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Index(IEnumerable<int> projects) 
{ 
    ... 
} 

Le paramater (projets) est toujours nul. J'ai parcouru mon code jQuery en l'inspectant à chaque étape et l'idList est définitivement rempli. J'ai également essayé mon $ ajax comme ceci:

$.ajax({ 
     url: $(this).href, 
     type: 'POST', 
     data: { projects : idList }, 
     success: function (result) {alert('Successful');}, 
     error: function (result) {alert('Error');} 

    }); 

Et toujours les mêmes résultats. Une idée de ce qui se passe? Et oui, j'ai une raison de faire un Ajax Post plutôt qu'un formulaire.

TIA

REMARQUE: J'utilise jQuery v1.6.4 et ASP.NET MVC 2.0.

+0

Si vous déboguez, est-ce le poste ajax atteint votre 'Index 'méthode? –

+0

$ (this) .href === undefined – Musa

+0

Vous publiez un tableau d'entiers sur ASP.NET MVC. Comment est-il supposé convertir un tableau d'entiers en un tableau de projets? Est-ce que vous supposez qu'il fait une recherche pour chaque entier et trouve le projet qui correspond à l'identifiant entier? Il y a une certaine "magie" à la façon dont ASP.NET MVC lie les objets. Vous devriez regarder de près certains exemples de code pour le comprendre. Le livre "ASP.NET MVC en action" est un endroit pour commencer. – Cymen

Répondre

2

essayer de convertir votre tableau en JSON en utilisant JSON.stringify

$.ajax({ 
    url: $(this).href, 
    type: 'POST', 
    dataType: "json", 
    data: JSON.stringify(idList), 
    traditional: true, 
    success: function (result) {alert('Successful');}, 
    error: function (result) {alert('Error');} 

}); 
+0

Je reçois les mêmes résultats. Avant d'entrer dans l'appel AJAX, mon idList est rempli. Je continue alors et frappe mon point d'arrêt dans mon contrôleur où le paramètre est NULL.

+0

@KeithBarrows, en regardant à travers le code similaire que j'ai, ils comprennent tous les ** traditionnels: vrai **. essayez ça. –

+0

@KeithBarrows, essayez traditionnel: vrai ** avec et sans stringify ** –

0

essayer:

var mylist='{"projects":'+ JSON.stringify(idList)+'}'; 

puis

data:mylist,