2010-04-01 35 views
6

Estoy tratando de publicar algunos datos con jQuery Ajax, pero los parámetros en mi método Ajax son nulos.Asp.Net Mvc Los parámetros de entrada JQuery ajax son nulos

Esto es prueba simple para enviar datos:

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

Y mi método Ajax se ve así:

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

hay algo mal básico con los datos de envío, pero no puedo averiguar qué. Todo el tiempo el título, el mensaje y las etiquetas son nulas, por lo que hay algo mal con la codificación, simplemente no sé qué.

De manera óptima, las etiquetas de parámetros deben ser una matriz o una lista de guías.

Nota: El jQuery.toJSON es este plugin

Respuesta

14

La acción del controlador Create no espera parámetros a JSON serializado para que no tenga que hacerlo. Tratamos de pasarlas directamente en su lugar:

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

Gracias aparentemente el tipo de contenido causó más problemas que buenos. – Dofs

+1

El mismo problema, no pude entender por qué el enlace del modelo no funcionaba para una cadena simple ... Tenía contentType configurado en json. Después de eliminarlo, funcionó de maravilla. – DavGarcia

0

No necesitamos la contentType: 'application/json; charset=utf-8', y $.toJSON

Aquí está el código que me hace feliz!

$(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); 
       } 
      }); 
     }); 
    }); 
Cuestiones relacionadas