如何使用jQuery处理JSON响应

时间:2010-01-07 09:06:03

标签: jquery ajax json

我能够使用JSON将数据发送到服务器并获取相应的数据,但在我正确处理返回的数据之前,我只是尝试将返回的JSON数据作为警报输出。我无法理解为什么这不起作用。

我确实收到了警告,但是文本值显示为“未定义” - 我不知道我需要做什么来打印整个JSON对象或其中的一部分。

两个System.out.println语句都确认正确的信息来自servlet。

servlet类:

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 个答案:

答案 0 :(得分:3)

您需要将displayEditValues作为回调传递而不是调用它displayEditValues()

$.getJSON("EditItem", {"selectedItem" : editValue}, displayEditValues);

答案 1 :(得分:1)

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

通过这种方式,您可以将任意数量的参数传递给displayEditValues()函数,例如

function(){displayEditValues(param1, param2, ..., paramN)}

答案 2 :(得分:1)

试试这个:

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

甚至

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