Как обрабатывать JSON-ответ с помощью jQuery - PullRequest
0 голосов
/ 07 января 2010

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

Я получаю предупреждение, но текстовое значение говорит "undefined" - я не уверен, что мне нужно сделать, чтобы он распечатал весь объект JSON или одну его часть.

Оба утверждения System.out.println подтверждают, что из сервлета поступает правильная информация.

Класс сервлета:

public class EditItemServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

    response.setContentType("text/json");
    PrintWriter out = response.getWriter();
    String itemToEdit = request.getParameter("selectedItem");

    System.out.println(itemToEdit);

    String myString="";
    try {
        myString = new JSONObject().put("selectedItem", itemToEdit).toString();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    System.out.println(myString);
    out.print(myString);
    }
}

Вот jQuery, который отправляет запрос и обрабатывает ответ:

$("#edit-form").hide();
    $("#edit-item-btn").click(function () {
        isEditClicked = "yes";
        $("#edit-form").show();
        var editValue = $("#edit-item-select").val();
        $.getJSON("EditItem", {"selectedItem" : editValue}, displayEditValues());
        alert("wassup");
    }); 

    function displayEditValues(data) {
        alert(data);
    };  // each

Ответы [ 3 ]

3 голосов
/ 07 января 2010

Вам нужно передать displayEditValues как обратный вызов, а не вызывать его displayEditValues():

$.getJSON("EditItem", {"selectedItem" : editValue}, displayEditValues);
1 голос
/ 07 января 2010

Попробуйте это:

  displayEditValues = function(data) {
      alert(data);
  };
  $.getJSON("EditItem", {"selectedItem" : editValue}, displayEditValues);

Или даже

  $.getJSON("EditItem", {"selectedItem" : editValue}, function(data) { alert(data); } );
1 голос
/ 07 января 2010
$.getJSON("EditItem",{"selectedItem":editValue},function(){displayEditValues()});

Таким образом, вы можете передать любое количество параметров вашей функции displayEditValues(), например,

function(){displayEditValues(param1, param2, ..., paramN)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...