2010-07-15 4 views
0

J'utilise le script suivant pour publier sur et terminer, il frappe le point d'arrêt sur le serveur, donc je sais que le routage est correct.Jquery ajax post à l'action MVC2

$(document).ready(function() { 
      var o = new Object(); 
      o.message = 'Hi from the page'; 
      $.ajax({ 
       type: 'POST', 
       contentType: 'application/json;', 
       data: JSON.stringify(o), 
       dataType: 'json', 
       url: 'home/PingBack', 
       success: function (result) { 
        alert(result.success); 
       } 
      }); 
     }); 

Le point de terminaison sur le serveur ressemble à ceci.

public JsonResult PingBack(MHolder message) 
     { 
      return Json(new { success = "steve"}); 
     } 

et le modèle ressemble à ceci.

public class MHolder 
    { 
     public string message { get; set; } 
    } 

Je suis sûr que, dans le passé, les valeurs ont été automatiquement lié au modèle, mais je ne peux pas sembler obtenir quoi que ce soit d'être lié atm! Même si je ne fais que passer la valeur comme une chaîne, je suis sûr que c'est quelque chose de stupide que je manque des idées?

Répondre

2

Quelques points à noter. Vous envoyez la requête en tant que chaîne JSON (contentType: 'application/json' et JSON.stringify(o)) alors que sur le serveur vous attendez un objet de type MHolder. Le classeur de modèle par défaut ne fera pas cette transformation. Vous devrez soit écrire un liant modèle personnalisé capable de désérialisation JSON retour à une instance MHolder ou envoyer la demande en key=value paires (ne stringify):

var o = new Object(); 
o.message = 'Hi from the page'; 
$.ajax({ 
    type: 'POST', 
    data: o, 
    dataType: 'json', 
    url: 'home/PingBack', 
    success: function (result) { 
     alert(result.success); 
    } 
}); 
0

Le code me semble OK, à première vue.

essayer d'utiliser ...

data : {message : "Hi from the page."}, 

... pour voir si cela provoque l'instance MHolder à être peuplée.

Aussi, utilisez quelque chose comme Fiddler pour capturer vos demandes et vous permettre de voir exactement ce qui est posté.