I am submitting my array from jQuery Datatables for server side processing, in the following form
Creating the array
var testArr = [];
testArr.push('A')
and under the $('#form').submit
function
$.ajax({
url: 'run',
data: testArr,
dataType :"json",
success: function(testArr){
alert( "Data Saved: " + testArr);
}
});`
And on the Spring Controller side , my annotation looks like this
@RequestMapping(value="/run", method=RequestMethod.POST,
headers="Accept=application/json")
public String run(@RequestParam("testArr") JSON testArr) {
When I submit the data for server side processing , it throws me an error stating that
Required JSON parameter 'testArr' is not present
I am unable to understand what am I doing wrong. Please help.
jSon and jSonP are pairs. You are not sending a pair. For test purposes, try testArr.push("{'A':'a'}")
ps: I am a novice!
I think
testArr
needs to be a json object: try using data:{ 'testArr': testArr }
[edit: I didn't really provide a complete answer, but some of this might be useful so I'll leave it around]
Assuming that you've confirmed testArr is JSON, I would say that it's because you're trying to alert a JSON object as a string, which you can't do. I imagine you can parse it before trying to alert it if that's what you want to do. For the purpose of testing, if you console.log it, you will also be able to inspect what's being "alerted" better.
For maintainability and understandability's sake, I wouldn't use the same name for the object being passed into "success" since it might not relate to your original JavaScript variable at all. I understand that you were providing reduced sample code, but just sayin'.
Thanks to another response I looked a bit more carefully. [ 'A' ] is not in fact valid JSON. That doesn't mean it won't try to submit, but I have to admit I ignored the server side of things; smarter people than me will be able to help you identify if it's returning valid JSON. (hint: if it's just returning what you sent, it's not)