2010-01-07 140 views
0

我能够使用JSON将数据发送到服务器并获取适当的数据,但是在我适当处理返回的数据之前,我只是试图将返回的JSON数据输出为警报。我不明白为什么这不起作用。如何使用jQuery处理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 
+0

感谢所有您的解决方案是有帮助的。 – Ankur 2010-01-07 09:17:32

回答

3

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

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

通过这种方式,您可以通过任意数量的参数,你displayEditValues()功能像

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

试试这个:

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

甚至

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