这是我的网站
JSP&的Javascript
<div class="col-xs-3 col-md-8">
<div class="panel panel-default">
<div class="panel-body">
<div class="row">
<div class="col-xs-3 col-md-3">
<select class="form-control" id="pertahun" name="dropdown">
<option selected="selected">PILIH</option>
<c:forEach var="i" begin="${th1}" end="${th}">
<option> <c:out value="${i}"/></option>
</c:forEach>
</select>
</div>
</div>
<div class="row">
<div class="col-xs-1 col-md-4" id="tabel"></br>
<table id="tab" class="table">
<thead><tr>
<th align="center">#</th>
<th align="center">Merk</th>
<th align="center">Tanggal</th>
</tr></thead>
<tbody>
<c:forEach items="${merk}" var="m">
<tr>
<td>${m.id_mntnc_tkn}</td>
<td>${m.merk}</td>
<td>${m.tahun}</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
<p></p>
</div>
</div>
</div>
这是js:
<script type="text/javascript">
$('#pertahun').change(function(){
var str = $('#pertahun').find(":selected").text();
//alert(str);
$.ajax({
url : 'merk-edc-mslh.html',
data: {"year":str},
dataType : "json",
cache : false,
contentType : 'application/json; charset=utf-8',
type : 'GET'
});
});
</script>
这个我的控制器
@RequestMapping(value = "/merk-edc-mslh", method = RequestMethod.GET)
public @ResponseBody
String getmerk(@RequestParam("year") String year,Map<String, Object> map) throws JSONException {
DateFormat dateFormat = new SimpleDateFormat("yyyy");
Date date = new Date();
if("PILIH".equals(year)){
year = dateFormat.format(date);
}
JSONArray result = new JSONArray();
RestTemplate tmp = new RestTemplate();
String url = ut+"/bar/dash-merk/"+year;
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
tmp.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
dash_merkModel[]dash=tmp.getForObject(url, dash_merkModel[].class);
JSONObject jsonObj = new JSONObject();
jsonObj.put("merk", dash);
return jsonObj.toString();
}
选择下拉列表时和此JSON消息
{"merk":[{"merk":"ingenico","tahun":"2015","sn":"14325CT22949427","id_mntnc_tkn":10}]}
但为什么数据表中没有改变?
答案 0 :(得分:1)
但为什么在数据表中没有改变?
这是因为你没有告诉你的脚本对你得到的回复做任何事情。
<script type="text/javascript">
$('#pertahun').change(function(){
var str = $('#pertahun').find(":selected").text();
//alert(str);
$.ajax({
url : 'merk-edc-mslh.html',
data : {"year":str},
dataType : "json",
cache : false,
contentType : 'application/json; charset=utf-8',
type : 'GET',
success : function(data){ // this is where you do something with response
console.log(data);
// The below is my assumption like filter the trs which do not contain
// 2015
var yr = data.merk[0].tahun; // 2015
$('#tab tbody').find('tr').filter(function(tr){
$(tr).find('td').last().text().trim() !== yr;
}).hide();
}
});
});
</script>
根据您的评论,您可以这样做:
success : function(data){
var resp = data.merk[0]; // 2015
$('#tab tbody').append(function(){
return $('<tr>',{
html:'<td>'+ resp.id_mntnc_tkn +'</td><td>' + resp.merk + '</td><td>'+ resp.tahun +'</td>'
});
});
}
答案 1 :(得分:0)
我希望您将更改事件功能保存在适当的位置并调用更改回调。如果没有,你可以把脚本jQuery $(document).ready()函数。
现在您的下拉列表更改事件已触发,并且正在调用回调。但是在ajax调用完成后,我无法看到你正在做任何响应。即您需要成功回调,这将在ajax调用成功完成后执行。之后,您必须根据您的开发使用响应。所以ajax调用就像
$.ajax({
url : 'merk-edc-mslh.html',
data: {"year":str},
dataType : "json",
cache : false,
contentType : 'application/json; charset=utf-8',
type : 'GET',
success: function(response, status){
for (var i = 0; i < response.merk.length; i++) {
var m = response.merk[i];
var tableHtml += "<tr>"
+"<td>"+ m.id_mntnc_tkn+"</td>"
+ "<td>"+ m.merk+"</td>"
+ "<td>"+ m.tahun +"</td>"
+ "</tr>";
}
$('#tab tbody').html(tableHtml);
}
});
我没有jsp绑定经验。通常只使用jquery的人会生成表格html并直接将其放入选择表格中。像AngularJs / reactJs等客户端框架将通过更新绑定对象/变量来自动更新表