2010-04-01 11 views
6

Próbuję opublikować niektóre dane z Ajax jQuery, ale parametry w mojej metodzie Ajax są zerowe.Parametry wejściowe asp.Net Mvc JQuery ajax są zerowe

Jest to prosty test, aby wysłać dane:

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: "); 
      } 
     }); 

I moja metoda Ajax wygląda następująco:

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

Jest coś złego w podstawowe dane wysyłam, ale nie mogę dowiedzieć się, co. Przez cały czas tytuł, wiadomość i identyfikatory tagów są zerowe, więc coś jest nie tak z kodowaniem, po prostu nie wiem co.

Optymalnie parametr tagId powinien być tablicą lub listą przewodników.

Uwaga: jQuery.toJSON jest to plugin

Odpowiedz

14

Create działanie regulatora nie spodziewa parametry do JSON w odcinkach, dzięki czemu nie trzeba. Spróbuj przekazując je bezpośrednio zamiast:

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

Dzięki podobno typ zawartości sprawił więcej problemów niż dobrze. – Dofs

+1

Ten sam problem, nie mogłem dowiedzieć się, dlaczego powiązanie modelu nie działa dla prostego łańcucha ... Miałem contentType ustawiony na json. Po usunięciu go działał świetnie. – DavGarcia

0

My nie potrzebujemy contentType: 'application/json; charset=utf-8', i $.toJSON

Oto kod mnie uszczęśliwia!

$(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); 
       } 
      }); 
     }); 
    }); 
Powiązane problemy