0

我有以下代码可以在 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 的表单,当我尝试使用语句data:$('#registrationForm').serialize() 发送可序列化数据时,我得到响应“servlet 临时移动,状态码为302”。

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

我可以知道我们如何在 ajax 调用上发送可序列化的数据。

谢谢,巴拉吉。

4

1 回答 1

2

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

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

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

于 2012-10-21T14:07:13.503 回答