2010-01-07 138 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); });