尝试将 ajax 调用上的可序列化数据发送到 servlet 时,得到“servlet 临时移动”的响应
Posted
技术标签:
【中文标题】尝试将 ajax 调用上的可序列化数据发送到 servlet 时,得到“servlet 临时移动”的响应【英文标题】:getting the response as "servlet temporarily moved " when trying to send serializable data on ajax call to a servlet 【发布时间】:2012-10-11 11:58:32 【问题描述】:我有以下代码可以在 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 调用中发送可序列化的数据。
谢谢, 巴拉吉。
【问题讨论】:
【参考方案1】:302 只是意味着 servlet 调用了response.sendRedirect(newURL)
。也许您的 servlet 出于某种原因这样做是因为它已成功处理了请求?
在$.ajax()
中检索重定向响应时,浏览器不会自动更改主窗口。如果您确实需要将主窗口更改为给定的 URL,那么您需要让 servlet 返回一些包含所需目标 URL 的特定响应,然后让 javascript 使用 window.location=newURL
执行重定向,其中 newURL
是从响应中提取。
顺便说一句,您的术语“可序列化数据”在上下文中听起来非常错误。 $.serialize()
只是将表单的所有输入值收集在一个 JSON 对象中,以便它可以作为 $.ajax
的请求参数发送。在 Java 上下文中,“可序列化数据”具有完全不同的含义。
【讨论】:
您好,谢谢您的回复,实际上我使用语句data:$('#registrationForm').serialize(),将表单的所有输入值收集在一个JSON对象中,以便它可以被作为请求参数发送,一些它是如何不起作用的,现在我通过 document.forms[0].username.value 获取每个值并将这些值放在 json 对象中,并在 ajax 调用中将其发送到 servlet,现在你能告诉我如何在 servlet 中使用那个 json 对象吗 以通常的方式通过request.getParameter()
。我宁愿先调试为什么它会发送重定向。以上是关于尝试将 ajax 调用上的可序列化数据发送到 servlet 时,得到“servlet 临时移动”的响应的主要内容,如果未能解决你的问题,请参考以下文章
使用 Laravel 4+ 从 jQuery/ajax 保存序列化的可排序数据
将裁剪的图像发送到数据库 ajax 在客户端和服务器上的 PHP
尝试使用 ajax 调用将 urdu 字符串视图发送到控制器,但它在控制时始终为空