Обязательный параметр JSON отсутствует в jQuery Datatables - PullRequest
0 голосов
/ 02 ноября 2011

Я отправляю свой массив из jQuery Datatables для обработки на стороне сервера в следующем виде

Создание массива

var testArr = [];  
testArr.push('A')

и в функции $('#form').submit

$.ajax({
    url: 'run',  
    data: testArr,  
    dataType :"json",  
    success: function(testArr){  
        alert( "Data Saved: " + testArr); 
    }  
});`

А на стороне Spring Controller моя аннотация выглядит следующим образом

@RequestMapping(value="/run", method=RequestMethod.POST,
                headers="Accept=application/json")  
public String run(@RequestParam("testArr") JSON testArr) {

Когда я отправляю данные для обработки на стороне сервера, возникает ошибка, в которой говорится, что

Обязательный параметр JSON 'testArr' отсутствует

Я не могу понять, что я делаю неправильно.Пожалуйста, помогите.

Ответы [ 3 ]

1 голос
/ 02 ноября 2011

[править: я не предоставил полного ответа, но кое-что из этого может быть полезно, поэтому я оставлю его здесь]

Предполагая, что вы подтвердили testArr - JSON , я бы сказал, что это потому, что вы пытаетесь предупредить объект JSON в виде строки, что вы не можете сделать.Я полагаю, что вы можете разобрать это, прежде чем пытаться предупредить, если это то, что вы хотите сделать.В целях тестирования, если вы сохраните его в файле console.log, вы также сможете лучше изучить то, что «предупреждено».

Для удобства обслуживания и понятности я бы не использовал одно и то же имя для объекта.передаваемый в "успех", поскольку он может вообще не относиться к вашей исходной переменной JavaScript.Я понимаю, что вы предоставили уменьшенный пример кода, но просто говорите.

success: function(data) {
  returned = $.parseJSON(data);
  console.log("Data Saved: " + returned);
}

Благодаря другому ответу я посмотрел немного более тщательно.['A'] не является действительным JSON.Это не значит, что он не будет пытаться представить, но я должен признать, что игнорировал стороны сервера;умные люди, чем я, смогут помочь вам определить, вернет ли он верный JSON.(подсказка: если он просто возвращает то, что вы отправили, это не так)

1 голос
/ 04 ноября 2011

Я думаю, testArr должен быть объектом json: попробуйте использовать данные: { 'testArr': testArr }

1 голос
/ 02 ноября 2011

jSon и jSonP являются парами.Вы не отправляете пару.В целях тестирования попробуйте testArr.push ("{'A': 'a'}")ps: я новичок!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...