Получить ошибку при отправке JSON из JavaScript в Java

0

Я хочу отправить некоторые данные из JavaScript в Java-сервлет с помощью JSON. Но у меня проблемы с этим.

Это мой код JavaSript:

var myData = {"someNumber":34,"someDate":"May 22, 2014 12:00:00 AM","expiryDate":"May 29, 2014 12:00:00 AM","anotherNumber":3,"customerNumber":56,"name":"John Dow","type":"notype","someSize":"XXL","noMonth":11,"notes":"some notes here","colour":"Black"};
$.ajax({
            url :           "customerAdd",
            type:           "get",
            data:           {"myData" : JSON.stringify(myData)},
            contentType:    "application/json; charset=utf-8",
            dataType:       "json",
            async:          false,
            success:        function(msg) {
                alert(msg);
            },
            error:          function(jqXHR, textStatus, errorThrown) {
                console.log("jqXHR: " + textStatus);
                console.log("textStatus: " + textStatus);
                console.log("errorThrown: " + errorThrown);
            }
        });

Это мой код Java:

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException{    
        Gson gson = new GsonBuilder().create();
        Customer customer = gson.fromJson(request.getParameter("myData"), Customer.class);
        System.out.println(customer.toString());
    }

В результате я получаю сообщение об ошибке в JavaScript:

"textStatus: parsererror"
"errorThrown: SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data"

Что случилось с моим кодом?

PS Я создаю myData в JavaScript таким образом:

var myData = {  
                someNumber:    + $("#someNumber").val(),
                someDate:       $("#someDate").val(),
                expiryDate:     $("#expiryDate").val(),
                anotherNumber:      + $("#anotherNumber").val(),
                customerNumber: + $("#customerNumber").val(),
                name:           $("#name").val(),
                type:           $("#type").val(),
                someSize:        $("#someSize").val(),
                noMonth:        + $("#noMonth").val(),
                notes:          $("#notes").val(),
                colour:         $("#colour").val() };
Теги:
servlets

4 ответа

2

Вот пример JSON.stringify:

JSON.stringify({x: 5, y: 6}); // '{"x":5,"y":6}'

Вы должны удалить квоты по имени параметров или использовать объект javascript.

Вы должны создать свой объект следующим образом:

var myData = new Object();
mydata.someNumber = $("#someNumber").val();
...

редактировать:

Кажется, вы пытаетесь получить ответ в вызове ajax, но ваш Java-код ничего не реагирует, возможно, вы можете попробовать его отладить. и попытаться выяснить, запускается ли Java-код?

  • 0
    Я добавил PS в своем вопросе. Пожалуйста, прочитайте это.
  • 0
    Я отредактировал свой пост. надеюсь, это поможет вам
Показать ещё 3 комментария
1

Я нашел свою ошибку. Я не должен ставить

dataType: "json",

атрибут в $.ajax, потому что я не ожидаю, что данные JSON вернутся с сервера. Я только что удалил его.

Спасибо Ли Би и Тони за ваши советы.

1

возможно, попробуйте

JSON.stringify({ "myData" : myData })
  • 0
    Я добавил PS в своем вопросе. Пожалуйста, прочитайте это.
  • 0
    Предполагая, что ваш объект myData действителен, я думаю, вы должны сделать это: $ .ajax ({url: "customerAdd", тип: "get", data: JSON.stringify ({"myData": myData}) и т. д. ,
Показать ещё 9 комментариев
0

Если метод сервлета не возвращает какой-либо json-контент в ajax, удалите

dataType: "json", из ajax-вызова в javascript.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню