很久没有写代码了,今天晚上项目需要,用jquery做个ajax,结果悲催的事情发生了
代码是灰常简单的,页面上
$.post("${ctx}/password/validateMail",{ account: $("#account").val(), email: $("#email").val(), randomImg:$("#randomImg").val()},
function(data) {
alert("Data Loaded: " + data);
});
java类
public void forgetPwdvalidate(final HttpServletRequest request,
final HttpServletResponse response, final PrintWriter out)
throws IOException {
LOGGER.debug("in method [forgetPwdvalidate]");
request.getParameter("account");
request.getParameter("email");
request.getParameter("randomImg");
out.write("{result:ok}");
out.close();
}
用的FF来调试,结果悲催的事情发生了,alert出来的data是xmlDocument,取不出来了
查了一个小时的资料,最后终于发现了幕后真凶:
对于$.ajax返回值,IE和FF的默认值不同,IE默认为html格式,ff为 xmldocument,在未指定的情况下,IE返回字符串,而FF返回document对象。在回调函数后增加 返回数据类型即可,设置为 text或者html就行。
修改后的JS方法如下:
$.post("${ctx}/password/validateMail", {
account : $("#account").val(),
email : $("#email").val(),
randomImg : $("#randomImg").val()
}, function(data) {
alert("Data Loaded: " + data);
}, "html");