JQUERY Ajax将null对象传递给我的Controller

时间:2013-06-02 03:58:03

标签: jquery ajax asp.net-mvc controller

任何人都可以帮助我吗?

我正在使用ajax向控制器发送一些数据对象,但我在控制器中获取了对象的空值。我尝试了一切,没有任何事情发生。

我的模型cs:

    public class Cliente
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int IdCliente { get; set; }

    [Required]
    public string Nome { get; set; }

    public string Sobrenome { get; set; }
    public Endereco Endereco { get; set; }
    public string Rg { get; set; }
    public string Cpf { get; set; }
    public Telefone Telefone { get; set; }

    //[DataType(DataType.Date)]
    public DateTime Nascimento { get; set; }

}

我的javascript:

var cliente = {
nome: $("#nome"),
sobrenome: $("#sobrenome"),
rg: $("#rg"),
cpf: $("#cpf"),
nascimento: $("#nascimento"),

telefone: { numero: $("#telefone") },

endereco: {
    logradouro: $("#rua"),
    complemento: $("#complemento"),
    bairro: $("#bairro"),
    cidade: $("#cidade"),
    cep: $("#cep"),
}
};

function salva() {
$.ajax({
    type: "POST",
    async: false,
    processData: false,
    data: cliente,
    //dataType: 'json',
    //contentType: 'application/json; charset=utf-8',
    url: 'Cadastro',
    success: function (msg) {
        console.log(msg);
    }
});
}

和我的控制器:

        [HttpPost]
    public ActionResult Cadastro(Cliente cliente)
    {
        if (service.Validate(cliente))
        {
            service.Add(cliente);
            //return RedirectToAction("Inicio");
            return Json(new { Cliente = cliente });
        }
        return View(cliente);
    }

3 个答案:

答案 0 :(得分:0)

尝试在cliente功能中移动salva的设置:

function salva() {

var cliente = {
nome: $("#nome"),
sobrenome: $("#sobrenome"),
rg: $("#rg"),
cpf: $("#cpf"),
nascimento: $("#nascimento"),

telefone: { numero: $("#telefone") },

endereco: {
    logradouro: $("#rua"),
    complemento: $("#complemento"),
    bairro: $("#bairro"),
    cidade: $("#cidade"),
    cep: $("#cep"),
}
};


$.ajax({
    type: "POST",
    async: false,
    processData: false,
    data: cliente,
    //dataType: 'json',
    //contentType: 'application/json; charset=utf-8',
    url: 'Cadastro',
    success: function (msg) {
        console.log(msg);
    }
});
}

答案 1 :(得分:0)

您是否忘记了.val()所有选择器?

$("#nome").val();

在通过AJAX调用之前提醒数据以确保您获取数据。

此外,您需要这样做:

将您的var cliente更改为var clienteObj,然后尝试以下操作:

 contentType: 'application/json',
 data: JSON.stringify({ cliente: clienteObj})

答案 2 :(得分:0)

   function salva() {

   var cliente = {
   nome: $("#nome").val(),
  sobrenome: $("#sobrenome").val(),
  rg: $("#rg").val(),
  cpf: $("#cpf").val(),
  nascimento: $("#nascimento").val(),

  telefone: { numero: $("#telefone").val() },

  endereco: {
    logradouro: $("#rua").val(),
    complemento: $("#complemento").val(),
    bairro: $("#bairro").val(),
   cidade: $("#cidade").val(),
   cep: $("#cep").val(),
 }
};


 $.ajax({
    type: "POST",
     async: false,
    processData: false,
   data: cliente,
   cache: false,
   contentType: false,
   url: 'Cadastro',
   success: function (msg) {
    console.log(msg);
   }
 });
}
  

我已将内容类型更改为false。这样您也可以传递Javascript对象。

     

我还添加了.val()来从该ID中获取值