Java 如何通过AJAX从JSP读取JS中发送的对象

Java 如何通过AJAX从JSP读取JS中发送的对象,java,javascript,jquery,ajax,jsp,Java,Javascript,Jquery,Ajax,Jsp,我不知道,如何从response的对象中读取日期。 我从servlet向javascript发送了两个stringsisValid、liczbaObiektow和更多Miasto类型的对象。我试图通过以下代码alertdata+'.+tnp显示Krakow,但这不起作用 我的源代码文件: index.jsp: <body> <label>Wojewodztwo</label> <select id="woj" name="wojewod

我不知道,如何从response的对象中读取日期。 我从servlet向javascript发送了两个stringsisValid、liczbaObiektow和更多Miasto类型的对象。我试图通过以下代码alertdata+'.+tnp显示Krakow,但这不起作用

我的源代码文件:

index.jsp:

<body>

    <label>Wojewodztwo</label>
    <select id="woj" name="wojewodztwa" size="1">
          <option value="" disabled selected>Wybierz Wojewodztwo</option>
          <option value="2">Małopolskie</option>
          <option value="4">Mazowieckie</option>
      </select>
      <BR/>
      <BR/>
      <BR/>
      <label>Miasta</label>
      <select id="miasto" name="miasta" size="1">
          <option value="" disabled selected>Wybierz miasto</option>
      </select>
      <BR/>
      <BR/>
      <BR/>
      <label>Zabytki</label>
      <select name="zabytki" size="1">
          <option value="" disabled selected>Wybierz artefakt</option>
      </select>
</body>
ajax.js:

$(document).ready(function() {
    //$('#miasto').append('<option value="test2">test2</option>');      
    //$('select[name="miasta"]').append('<option value="test2">Monarchia</option>');    

    var tnp;
    $('#woj').change(function () {
        //alert('Tui2');
        //var b = $(this).val();
        //alert(b);
        $.ajax({
            url: 'update',
            type: 'GET',
            dataType: 'json',
            data: $('#woj').serialize(),
            success: function(data) {
                if(data.isValid){
                    alert(data.liczbaObiektow);
                    for(var i=0; i < data.liczbaObiektow; ++i) {
                        tnp = 'a'+i;
                        alert(data+'.'+tnp);
                    }
                }
                else {
                    alert('Please enter a vaild username');
                }
            }
        }); 

    });
});
update.java:

class Miasto {
    int idMiasta;
    String opisMiasta;
    Miasto(int idMiasta, String opisMiasta) {
        this.idMiasta = idMiasta;
        this.opisMiasta = opisMiasta;
    }
}

@WebServlet("/update")
public class UpdateUsername extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private boolean isValid;


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //ServletContext sc = getServletContext();
        //sc.setAttribute("username", "sex");
        isValid = false;
        String wojewodztwo = request.getParameter("wojewodztwa");
        Map <String, Object> map = new HashMap<String, Object>();
        if ( wojewodztwo != null && wojewodztwo.trim().length() != 0 ) {

            if(wojewodztwo.equalsIgnoreCase("2")) {
                map.put("liczbaObiektow", "2");
                map.put("a1", new Miasto(22, "Krakow"));
                map.put("a2", new Miasto(33, "Nowa-Huta"));
            }
            else {
                map.put("liczbaObiektow", "3");
                map.put("a1", new Miasto(22, "Warszawa"));
                map.put("a2", new Miasto(33, "Starowka"));
                map.put("a3", new Miasto(33, "Twoja stara"));
            }

            isValid = true;
            //map.put("username", wojewodztwo);
            map.put("isValid", isValid);
            write(response, map);
        } else {
            map.put("isValid", isValid);
            write(response, map);
        }
    }

    private void write(HttpServletResponse response, Map<String, Object> map) throws IOException {
        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write(new Gson().toJson(map));
    }

}

非常感谢您的帮助。

尝试使用console.logdata;在成功的召唤中;您说您的响应类型是JSON数据类型:“JSON”,所以这一行data.isValid将不起作用-首先检查您的响应是否是有效的JSON?正如@RobertRozas所说,使用console.logdata ifdata.isValid是正确的,但我不知道如何将Krakow是JS作为valueok来阅读,我现在知道了。例如,a2是一个对象,但如果我调用data.a1.opismista,我将得到Cracow。感谢Robert和blurfus向我展示方法console.log。这是非常有用的。