我的index.jsp页面,用这行代码加载我的表单:
$('#box').load('/Edit_Data.jsp?id=' + myID);
然后,我可以正确编辑表单中的数据。完成后,我点击一个触发此功能的按钮:
function save() {
$.ajax({
type: 'POST',
cache: false,
url: '/Edit_data',
data: $('form[name="formData"]').serialize(),
complete : function(jqXHR,textStatus) {
alert("complete " + jqXHR.responseText );
},
error: function(jqXHR,textStatus){
alert("status " + textStatus + ", response :" + jqXHR.responseText);
}
});
}
和路径“/ Edit_data”的java servlet,返回:
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/xml");
String xml = "<report><error_msg></error_msg></report>";
resp.getWriter().println(xml);
点击按钮后的行为是:
我的问题是:为什么在完成ajax请求后,会重新加载index.jsp页面。正确的行为应该是:在请求之后,因为我处理完整的函数
,所以不可能做任何事情一条线索应该是servlet返回的错误消息,但我看不到错误的全部内容,所以我不明白触发错误的原因...
另一个重要的线索,我只有firefox和chrome的这个问题。它适用于IE。
你能帮我解决一下吗?
非常感谢,
蝙蝠
答案 0 :(得分:6)
Ajax意味着异步请求......
它不应该理想地重新加载,如果你没有做任何错误。
好吧,你可以使用return false;
或者在调用ajax函数时onclick="return AjaxFunction();
对于您的情况,它可能是:onclick="return save();
希望这能解决您的问题。
干杯!
答案 1 :(得分:4)
看起来您的表单以“经典”方式提交,因为您没有阻止表单的默认操作。尝试在保存功能的末尾添加return false
,或将处理程序绑定到表单的submit
事件:
$("#theForm").submit(function (e) {
// prevent normal submit behaviour
e.preventDefault();
});