2016-04-02 23 views
2

Bir HTML formundan veri yakalamaya ve MVC denetleyicisine göndermeye çalışıyorum ancak aşağıdaki kod çalışmıyor. Birisi bana burada yardım edebilir.JSON verilerini ajax çağrısından MVC denetleyicisine gönderemiyor

var form = JSON.stringify(jQuery('#project_form').serializeArray()); 
    $.ajax({ 
    contentType : "application/json; charset=utf-8", 
    dataType : "json", 
    type: "POST", 
    url: "/SE/doLogin", 
    data: form, 
    success: function(response){ 
    window.location.href = response; 

Ve burada

@RequestMapping(value = "/doLogin",method = RequestMethod.POST,consumes = "application/json",produces="text/plain") 
@ResponseBody 
public String sayHello(@RequestBody TestDao templateModel){ 
    System.out.println("say"); 
    System.out.println(templateModel.getEmail()); 
    TestMethod t1 = new TestMethod(); 
      t1.getValues(); 
    return "newsFeed"; 

} 

Ben herhangi bir argüman tutmak değilim, nasıl çalıştığını ve S.o.p konsolda basılmış oluyor benim denetleyicisi olduğunu. @RequestBody çalışmıyorken emin değilim.

+0

Ve TestDao ve Json verileriniz nasıl görünüyor? – starcorn

+0

@starcorn Json veri formatını işaretlediğiniz için teşekkür ederiz. Bence bununla ilgili bir sorun var. 'dan sonra var biçim = JSON.stringify (jQuery ('# project_form'). SerializeArray()); Json'ı 'un altında alıyorum. [{"name": "email", "value": "kala"}, {"name": "password", "value": "kala"}] Bunu nasıl düzeltebiliriz? –

cevap

0

json nesnesini eşlemek için Model nesnesini tanımlayabilirsiniz.

@RequestMapping(value = "/doLogin",method = RequestMethod.POST,consumes = "application/json",produces="text/plain") 
@ResponseBody 
    public String sayHello(@ModelAttribute TemplateModel templateModel){ 
     System.out.println("say"); 
     System.out.println(templateModel.getEmail()); 
     TestMethod t1 = new TestMethod(); 
       t1.getValues(); 
     return "newsFeed"; 

    } 

// This bean should map your json object. 
public class TemplateModel{ 
     private String email; 
     private String values; 
    } 
0

Form serileştirme işleminiz yalnızca anahtar/değer çifti oluşturabilir. Yani MVC kontrolöründe bir nesneyi gerçekten tüketemezsiniz.

  • yerine TestDao nesnenin adı-değerinin bir harita Kabul:

    bu çalışma için iki yol vardır.

  • formu TestDao
0

Kullanım formundan javascript nesne oluşturmak için bir jquery nesne seri hale uzatma bir nesneye formunuzun isim değerini dönüştürür JavaScript bir fonksiyon yazın. Ardından denetleyiciye JSON olarak gönderin. Bu yardımcı olur

var form = JSON.stringify(jQuery('#project_form').serializeObject()); 
    $.ajax({ 
    contentType : "application/json; charset=utf-8", 
    dataType : "json", 
    type: "POST", 
    url: "/SE/doLogin", 
    data: form, 
    success: function(response){ 
    window.location.href = response; 

umut gibi here

$.fn.serializeObject = function() 
{ 
    var o = {}; 
    var a = this.serializeArray(); 
    $.each(a, function() { 
     if (o[this.name] !== undefined) { 
      if (!o[this.name].push) { 
       o[this.name] = [o[this.name]]; 
      } 
      o[this.name].push(this.value || ''); 
     } else { 
      o[this.name] = this.value || ''; 
     } 
    }); 
    return o; 
}; 

kullanımı bunu Toplanan.

0

lütfen emin olun sizin bağımlılık kütüphanede yılında Jakson kavanoz olduğunu. Eğer bahar 4 kullanıyorsanız, çerçeve JSON olarak otomatik pikap içerik müzakereci ve durumda, sunucuya JSON taşımak ve JAXB kavanozları kullanım

sunucuya geri

gelen JSON verilerini almak için arka planda Jakson kavanozlar için bulacaksınız olacak XML'i içerik arabulucusu olarak ele almanız gerekir.

İlgili konular