2010-06-28 11 views
0

J'ai les actions suivantes:Cette reliure de jquery, quel est le problème?

public JsonResult GetGridCell(double longitude, double latitude) 
{ 
    var cell = new GridCellViewModel { X = (int)Math.Round(longitude.Value, 0), Y = (int)Math.Round(latitude.Value, 0) }; 
    return Json(cell);    
} 

J'appelle avec la jquery suivante:

$.post('Grid/GetGridCell', { longitude: location.longitude, latitude: location.latitude }, 
    function (data) { 
     InsertGridCellInfo(data); 
    }); 

Les paramètres de mon action GetGridCell ne sont jamais remplis (ils sont nuls). Lors du débogage, je peux voir que ma Request.Form [0] est appelée longitude et a la bonne valeur. Idem pour la latitude.

Lorsque j'utilise exactement le même code, mais avec un $.get tout fonctionne bien.

Qu'est-ce que je fais mal?

Répondre

0

Vous ne savez pas trop ce que vous faites mal ... Avez-vous une entrée de route pour 'Grid/GetGridCell'?

Essayez de décorer votre méthode JsonResult avec l'attribut AcceptVerbs, la création d'un contrat distinct méthode pour obtenir et un autre pour la Poste

Dans le cadre d'un test rapide (pour moi) sans aucune entrée de route, j'ai pu passer les valeurs suivantes:

En utilisant ce qui suit par exemple pour afficher les valeurs:

$.post('Home/GetGridCell', { longitude: 11.6, latitude: 22.2 }, 
function(data) { 
    alert(data); 
}); 

utilisant .get $ appels intead

[AcceptVerbs(HttpVerbs.Get)] 
    public JsonResult GetGridCell(double longitude, double latitude) 
    { 
     var cell = new GridCellViewModel { X = (int)Math.Round(longitude), Y = (int)Math.Round(latitude) }; 
     return Json(cell); 
    } 

et

$ .post invite

[AcceptVerbs(HttpVerbs.Post)] 
    public JsonResult GetGridCell(double longitude, double latitude, FormCollection collection) 
    { 
     var cell = new GridCellViewModel { X = (int)Math.Round(longitude), Y = (int)Math.Round(latitude) }; 
     return Json(cell); 
    } 
+0

Mon routage semble bien puisque je suis frappé du point d'arrêt dans mon action. J'ai essayé d'ajouter les attributs HttpVerbs.Post et FormCollection, mais rien. Le formulaireCollection contient deux clés avec des noms exactement comme les paramètres et ils contiennent la valeur correcte .. J'ai également collé votre $ .post (changé Home to Grid) mais toujours rien Bizare –

+0

Je pense que j'ai trouvé le problème. Lorsque je n'utilise pas de séparateurs décimaux dans le paramètre que j'envoie de jquery, cela fonctionne très bien. Je pense que c'est le réglage de la région qui pose problème. Je dev sur ma machine nl-BE où le séparateur décimal est un deux-points où jquery me donne un point. –

+0

Cool, sonne comme les paramètres de la région. –