Java 如何通过AJAX从JSP读取JS中发送的对象
我不知道,如何从response的对象中读取日期。 我从servlet向javascript发送了两个stringsisValid、liczbaObiektow和更多Miasto类型的对象。我试图通过以下代码alertdata+'.+tnp显示Krakow,但这不起作用 我的源代码文件: index.jsp: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
<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。这是非常有用的。