在尝试将ajax调用上的可序列化数据发送到servlet时,将响应作为“servlet临时移动”

时间:2012-10-21 14:00:05

标签: javascript ajax jquery jquery-selectors

我有以下代码将ajax调用的可序列化数据发送到servlet

$.ajax({ 
    type: "post",
    url: registersubmit.RegisterServlet.json,
    dataType: "json",   
    data:$('#registrationForm').serialize(),          
    success: function(msg) {  
               //   alert(msg.data);
               alert('success'+msg.message2);     
    },
    error: function (xhr, ajaxOptions, thrownError){
             alert('HAI');
             alert('BYE');
    }  
}); 

我有一个带有id registrationForm的表单,当我尝试使用语句数据发送可序列化数据时:$('#registrationForm')。serialize(),我得到响应“servlet暂时移动状态代码302 ”

注意:如果我删除语句数据:$('#registrationForm')。serialize(),那么我得到状态代码为200的正常ajax响应。

我是否知道如何在ajax调用上发送可序列化数据。

谢谢, 巴拉吉。

1 个答案:

答案 0 :(得分:2)

302只表示servlet已调用response.sendRedirect(newURL)。也许你的servlet出于某种原因正在这样做,因为它已成功处理了请求?

$.ajax()中检索重定向的响应时,浏览器不会自动更改主窗口。如果您确实需要将主窗口更改为给定的URL,那么您需要让servlet返回包含所需目标URL的特定响应,然后让JavaScript使用window.location=newURL执行重定向,其中newURL 1}}已从响应中提取。

顺便说一下,你的术语“可序列化数据”在上下文中听起来非常错位。 $.serialize()仅收集JSON对象中表单的所有输入值,以便可以作为$.ajax的请求参数发送。在Java上下文中,“可序列化数据”具有完全不同的含义。