2011-08-30 3 views
1

J'appelle le serveur avec:Comment formater un JQuery getJSON

var url = '@Url.Action("GetWhoBowls", "Home")'; 
$.getJSON(url, { "theDate": "calEvent.start" }, function (data) { 
        alert(data.name); 
       }); 

J'ai essayé toute permutation de citer le « theDate » et même calEvent.start comme ci-dessus .... dans tous les cas le serveur se plaint que (de Firebug):

le dictionnaire des paramètres contient une entrée nulle pour le paramètre 'theDate' de type non-nullable 'System.Double' pour la méthode « System.Web.Mvc.ActionResult GetWhoBowls (Double) 'dans' MatchClubMVC.Controllers.HomeController '.

Firebug affiche les paramètres de l'appel comme theDate calEvent.start

Voici ma signature de la méthode du contrôleur

GetWhoBowls de ActionResult publique (double theDate)

Quelqu'un pourrait-il être si sorte de me mettre sur le bon chemin?!

+0

Quelle est la valeur transmise par calEvent.start? (Je ne suis pas familier avec fullcalendar) –

+0

Major Byte, le calEvent.start est la date et l'heure de début de l'événement cliqué. – Pablo

Répondre

0

essayer

public ActionResult GetWhoBowls(double? theDate) 

aussi l'erreur est surgissement parce que vous envoyez une valeur nulle dans { "theDate": "calEvent.start" }

EDIT

pas sûr que cela résoudra le problème ou non, mais essayer

var url = '@Url.Action("GetWhoBowls", "Home")'; 
$.getJSON(url, { theDate: "calEvent.start" }, function (data) { 
        alert(data.name); 
       }); 

et modifier le résultat de l'action comme celui-ci

public ActionResult GetWhoBowls(double theDate) 
{ 
    return(data,JsonRequestBehavior.AllowGet); 
} 

Cela vous donnera le même errorif vous envoyez null du client

+0

Pourquoi le contrôleur reçoit-il une valeur nulle lorsque je peux voir que calEvent.start est une date valide sur le client? Rendre le type un double nullable permet maintenant au paramètre d'entrer. Ma question est comment faire passer le calEvent.start comme paramètre dans l'appel JSON. Evidemment ce que je fais n'est pas correct – Pablo

+0

@Paul Stocks vous question était pourquoi recevoir l'erreur ':)' de toute façon je vais mettre à jour la question dans un instant – Rafay

+0

J'espère que ce n'est pas le cas de type incompatibilité si vous passez 'DateTime 'du client, au serveur, vous devrez faire' DateTime theDate' – Rafay

2

Si vous attendez un double sur votre contrôleur ne pas envoyer une chaîne (enlever les guillemets simples autour calEvent.start sinon vous envoyez cette chaîne littérale au serveur qui ne peut évidemment pas être converti en double):

$.getJSON(url, { theDate: calEvent.start }, function (data) { 
    alert(data.name); 
}); 

assurez-vous également que calEvent.start est une double valeur valide.