I need to send a JSON string to Spring MVC controller.But I do not have any form bindings to it , I just need to send a plain JSON data to Controller class.I am making jQuery AJAX call to the Controller method like the below code.
$.ajax ({ url: "./save", type: "POST", data: JSON.stringify(array), dataType: "json", contentType: "application/json; charset=utf-8", success: function(){ alert("success "); } });
But how do I retrieve it in the Controller method?(Note: It is just plain JSON data and not a form submission).
Make sure you specify POST type, as ajax method uses GET method by default. MVC Controller: Decorate the Action method with HttpPost verb. This action method will only handle http post request from browser. Ajax submission from the browser will be automatically deserialized to FormData c# class as a poco.
Add the following dependencies
<dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.7</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-asl</artifactId> <version>1.9.7</version> </dependency>
Modify request as follows
$.ajax({ url:urlName, type:"POST", contentType: "application/json; charset=utf-8", data: jsonString, //Stringified Json Object async: false, //Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation cache: false, //This will force requested pages not to be cached by the browser processData:false, //To avoid making query String instead of JSON success: function(resposeJsonObject){ // Success Message Handler } });
Controller side
@RequestMapping(value = urlPattern , method = RequestMethod.POST) public @ResponseBody Person save(@RequestBody Person jsonString) { Person person=personService.savedata(jsonString); return person; }
@RequestBody
- Covert Json object to java @ResponseBody
- convert Java object to json
Html
$('#save').click(function(event) { var jenis = $('#jenis').val(); var model = $('#model').val(); var harga = $('#harga').val(); var json = { "jenis" : jenis, "model" : model, "harga": harga}; $.ajax({ url: 'phone/save', data: JSON.stringify(json), type: "POST", beforeSend: function(xhr) { xhr.setRequestHeader("Accept", "application/json"); xhr.setRequestHeader("Content-Type", "application/json"); }, success: function(data){ alert(data); } }); event.preventDefault(); });
Controller
@Controller @RequestMapping(value="/phone") public class phoneController { phoneDao pd=new phoneDao(); @RequestMapping(value="/save",method=RequestMethod.POST) public @ResponseBody int save(@RequestBody Smartphones phone) { return pd.save(phone); }
Dao
public Integer save(Smartphones i) { int id = 0; Session session=HibernateUtil.getSessionFactory().openSession(); Transaction trans=session.beginTransaction(); try { session.save(i); id=i.getId(); trans.commit(); } catch(HibernateException he){} return id; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With