在我的jsp页面中,我有一个jquery区域,它将值传递给servlet,后者返回dropdownlist的输出。然后jsp文件进行一些更新,因此在重新填充时,下拉列表中的某些值不应该存在。但它没有发生。我的jquery代码是
$("#cbocode").change(function(){
var cdid=$("#cbocode option:selected");
$.get("trnDC?caseNo=20&cdid="+cdid.text(),function(data){
$("#divinstrument").html(data);
})
,servlet代码是
case 20:{ //jquery call
String cdid=(String) request.getParameter("cdid");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select instrumentid from mstinstrument where codeid='" + cdid + "' and rec_Status='A' and statusid='U' and Agentid='METLAB'");
if (!rs.wasNull()){
//List data=new ArrayList();
String v="<select id=cboinstr>";
while (rs.next())
{
// data.add(rs.getString("vend_code"));
v += "<option>" + rs.getString("instrumentid").toString() + "</option>";
}
v+="</select>";
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.print(v);
}
else{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.print("no data found");
}
我失踪的地方???
答案 0 :(得分:2)
获取请求由浏览器缓存。使用cache: false
方法使用$.get("trnDC?caseNo=20&cdid="+cdid.text(),function(data){
$("#divinstrument").html(data);
})
。
而不是:
$.ajax({url: "trnDC?caseNo=20&cdid="+cdid.text(),
cache: false,
success: function(data){
$("#divinstrument").html(data);
}
});
使用:
{{1}}
答案 1 :(得分:1)
默认情况下,缓存get请求。您可以使用@kgiannakakis建议的内容并设置cache:false。我不是100%,但我认为Internet Explorer可能有问题吗?
为此,您需要将$ .get更改为使用$ .ajax,例如:
$.ajax({
type: 'GET'
url: "trnDC?caseNo=20&cdid="+cdid.text(),
success: function(data){
$("#divinstrument").html(data);
},
cache: false
});
我还有其他两种方法可以解决您的问题:
从Get更改为Post。
$.post("trnDC?caseNo=20&cdid="+cdid.text(),function(data){
$("#divinstrument").html(data);
})
添加一个总是不同的'false'参数,例如javascripts Date.getDate()