ajax post重新加载页面

时间:2012-01-30 10:43:34

标签: jquery ajax jsp servlets

我的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);

点击按钮后的行为是:

  1. 请求已正确发送
  2. 我收到错误提示消息:状态错误,响应:
  3. 然后,我收到完整的消息:complete(responseText为null)
  4. 最后,它使用我发送给servlet的参数的Get请求重新加载我的index.jsp页面。像那样:http://localhost:8888/index.jsp?name=test&firstname=test
  5. 我的问题是:为什么在完成ajax请求后,会重新加载index.jsp页面。正确的行为应该是:在请求之后,因为我处理完整的函数

    ,所以不可能做任何事情

    一条线索应该是servlet返回的错误消息,但我看不到错误的全部内容,所以我不明白触发错误的原因...

    另一个重要的线索,我只有firefox和chrome的这个问题。它适用于IE。

    你能帮我解决一下吗?

    非常感谢,

    蝙蝠

2 个答案:

答案 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();
});