ie不解析 dwz 返回的json对象,求解决办法
表单提交
<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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(14)
还是不行啊,有没有什么彻底的解决办法
亲,能否将其后台代码页贴出来一下呢? 我想知道你后台怎么返回json的(以下代码)
亲,能否将其后台代码页贴出来一下呢? 我想知道你后台怎么返回json的(以下代码)
应该是响应头设置ContentType为text/html,前端获取到json字符串的时候,需要
json = eval('('+json+')'); 来处理一下。
这样所有浏览器都支持。
我按照楼主解决方法上修改的,
<button
type="button"
onclick="validateCallback('#form0', dialogAjaxDone);">保存</button>这里的onclick事件不执行,补充:我用的是navTabAjaxDone,在action里也改成了navTabID
你的form 没有id,用这个 validateCallback($(this).parents('form'),dialogAjaxDone)
设置这个不行,变成保存文件了
@kakaximu 额,现在解决了吗?
设置http返回头的contentType为application/json
还有个问题就是在使用iframe上传文件时返回头需要设置成application/html,才可正确获取。
我用的是jfinal+dwz 返回类型就是json
前后台交互主要途径就是json。。。你这个可能是看起来像json的字符串,请问你返回前台之前用json-jar转过么?
contentType一直是 text/html
想起来了,IE不支持返回json类型的数据,你可以将返回的contextType改成html/text试试。
没看懂,你在哪边处理返回值的?