ie不解析 dwz 返回的json对象,求解决办法

发布于 2021-11-29 10:08:02 字数 1806 浏览 863 评论 14

表单提交

<form method="post" action="${BASE_PATH}/member/addMember" class="pageForm -validate" onsubmit="return validateCallback(this, dialogAjaxDone);">

后台处理返回

this.render(DwzRender.dailogSuccessAndClose(flag, "listMember"));

用IE浏览器,前台直接就输出json格式

{ "statusCode":"200","message":"操作成功","navTabId":"listMember","rel":"","callbackType":"closeCurrent","forwardUrl":"","confirmMsg":"" }


自己解决了

在 dwz.ajax.js 的validateCallback 中,应为有验证 form.valid() 方法造成的


function validateCallback(form, callback, confirmMsg) {
	var $form = $(form);

	if (!$form.valid()) {
		return false;
	}
	var _submitFn = function(){
		$.ajax({
			type: form.method || 'POST',
			url:$form.attr("action"),
			data:$form.serializeArray(),
			dataType:"json",
			cache: false,
			success: callback || DWZ.ajaxDone,
			error: DWZ.ajaxError
		});
	};
	if (confirmMsg) {
		alertMsg.confirm(confirmMsg, {okCall: _submitFn});
	} else {
		_submitFn();
	}	
	return false;
}




解决办法

去掉 form 表单的 onSubmit 或直接 return false

<form id="form0" method="post" action="${BASE_PATH}/member/addMember" class="pageForm -validate>

submit 按钮的type 类型改为button ,并添加onclick

<button type="button" onclick="validateCallback('#form0', dialogAjaxDone);">保存</button>



谢谢大家

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(14

海之角 2021-12-01 09:30:47

还是不行啊,有没有什么彻底的解决办法 

输什么也不输骨气 2021-12-01 09:30:45

亲,能否将其后台代码页贴出来一下呢? 我想知道你后台怎么返回json的(以下代码)

{ "statusCode":"200","message":"操作成功","navTabId":"listMember","rel":"","callbackType":"closeCurrent","forwardUrl":"","confirmMsg":"" }
怎言笑 2021-12-01 09:30:45

亲,能否将其后台代码页贴出来一下呢? 我想知道你后台怎么返回json的(以下代码)

{ "statusCode":"200","message":"操作成功","navTabId":"listMember","rel":"","callbackType":"closeCurrent","forwardUrl":"","confirmMsg":"" }
够钟 2021-12-01 09:30:42

应该是响应头设置ContentType为text/html,前端获取到json字符串的时候,需要

json = eval('('+json+')'); 来处理一下。

这样所有浏览器都支持。

德意的啸 2021-12-01 09:30:42

我按照楼主解决方法上修改的,
<button
 
type="button"
 
onclick="validateCallback('#form0', dialogAjaxDone);">保存</button>这里的onclick事件不执行,补充:我用的是navTabAjaxDone,在action里也改成了navTabID

吃颗糖壮壮胆 2021-12-01 09:30:42

你的form 没有id,用这个 validateCallback($(this).parents('form'),dialogAjaxDone)

英雄似剑 2021-12-01 09:30:35

设置这个不行,变成保存文件了

沙与沫 2021-12-01 09:30:31

@kakaximu 额,现在解决了吗?

时光清浅 2021-12-01 09:30:28

设置http返回头的contentType为application/json

response.setContentType("application/json");

还有个问题就是在使用iframe上传文件时返回头需要设置成application/html,才可正确获取。

无声静候 2021-12-01 09:30:27

我用的是jfinal+dwz 返回类型就是json

一人独醉 2021-12-01 09:30:17

前后台交互主要途径就是json。。。你这个可能是看起来像json的字符串,请问你返回前台之前用json-jar转过么?

反目相谮 2021-12-01 09:30:09

contentType一直是 text/html

别再吹冷风 2021-12-01 09:29:03

想起来了,IE不支持返回json类型的数据,你可以将返回的contextType改成html/text试试。

带上头具痛哭 2021-12-01 05:43:02

没看懂,你在哪边处理返回值的?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文