2010-04-01 3 views
6

Je suis en train de publier des données avec jQuery Ajax, mais les paramètres de ma méthode Ajax sont null.Asp.Net Mvc JQuery paramètres d'entrée ajax sont null

Ce test simple est d'envoyer des données:

var dataPost = { titel: 'titel', message: 'msg', tagIds: 'hello' }; 
     jQuery.ajax({ 
      type: "POST", 
      url: "Create", 
      contentType: 'application/json; charset=utf-8', 
      data: $.toJSON(dataPost), 
      dataType: "json", 
      success: function(result) { 
       alert("Data Returned: "); 
      } 
     }); 

Et ma méthode Ajax ressemble à ceci:

[HttpPost] 
public ActionResult Create(string title, string message, string tagIds) 
{... } 

Il y a quelque chose de mal avec les données de base que j'envoie, mais je ne peux pas comprendre quoi. Tout le temps le titre, le message et tagIds sont null, donc il y a quelque chose de mal avec l'encodage, je ne sais pas quoi.

De manière optimale, le paramètre tagIds doit être un tableau ou une liste de guids.

Note: Le jQuery.toJSON est ce plugin

Répondre

14

L'action du contrôleur Create ne prévoit pas de paramètres à JSON sérialisé de sorte que vous n'avez pas. Essayez-les passer directement à la place:

var dataPost = { titel: 'titel', message: 'msg', tagIds: 'hello' }; 
jQuery.ajax({ 
    type: "POST", 
    url: "Create", 
    data: dataPost, 
    dataType: "json", 
    success: function(result) { 
     alert("Data Returned: "); 
    } 
}); 
+2

Merci apparemment le type de contenu a fait plus de mal que de bien. – Dofs

+1

Même problème, je n'arrivais pas à comprendre pourquoi la liaison de modèle ne fonctionnait pas pour une chaîne simple ... J'avais le contentType défini sur json. Après l'avoir enlevé, a bien fonctionné. – DavGarcia

0

Nous ne avons pas besoin du contentType: 'application/json; charset=utf-8', et $.toJSON

Voici le code qui me rend heureux!

$(function() { 
     $("#btnSumbit").click(function() { 
      $('#results').hide(); 
      $('#loadingmessage').show(); 
      var a = $("#query").val(); 

      $.ajax({ 
       type: "POST", 
       url: "/Search/Index", 
       data: ({ query: a }), 
       datatype: "json", 
       success: function (data) { 
        $('#results').empty(); 
        for (var i = 0; i < data.length; i++) { 
         var div = "<div>" + data[i].Name + "</div>"; 
         $("#results").append(div); 

        } 
        $('#loadingmessage').hide(); 
        $('#results').show(); 
       }, 
       failure: function (errMsg) { 
        $('#loadingmessage').hide(); 
        alert(errMsg); 
       } 
      }); 
     }); 
    });