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

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

清风夜微凉 发布于 2021-11-29 字数 1882 浏览 825 回复 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>

谢谢大家

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

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

评论(14

海之角 2021-12-01 14 楼

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

怎言笑 2021-12-01 13 楼

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

{ "statusCode":"200","message":"操作成功","navTabId":"listMember","rel":"","callbackType":"closeCurrent","forwardUrl":"","confirmMsg":"" }
输什么也不输骨气 2021-12-01 12 楼

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

{ "statusCode":"200","message":"操作成功","navTabId":"listMember","rel":"","callbackType":"closeCurrent","forwardUrl":"","confirmMsg":"" }
吃颗糖壮壮胆 2021-12-01 11 楼

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

德意的啸 2021-12-01 10 楼

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

够钟 2021-12-01 9 楼

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

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

这样所有浏览器都支持。

英雄似剑 2021-12-01 8 楼

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

沙与沫 2021-12-01 7 楼

@kakaximu 额,现在解决了吗?

时光清浅 2021-12-01 6 楼

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

response.setContentType("application/json");

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

无声静候 2021-12-01 5 楼

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

一人独醉 2021-12-01 4 楼

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

反目相谮 2021-12-01 3 楼

contentType一直是 text/html

别再吹冷风 2021-12-01 2 楼

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

带上头具痛哭 2021-12-01 1 楼

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