我有一个问题发生在IE 8和Firefox 6.0但不是Chrome 17.0.9.当我发布下面的frmMain时,我将它发送到一个测试页面,该页面只返回一个带有ContentType的简单
JSON字符串:application / json;字符集= UTF-8.问题是IE和FF将提示我保存从服务器返回的JSON,而不是在我的jquery代码中点击success方法.但奇怪的是,如果我省略< input name ='File_1'type ='file'/>在发布的表单上然后IE和FF不提示我保存我的JSON和我的jquery成功代码触发.
因此,发布的内容似乎与浏览器对返回的有效负载的反应有关(在IE和FF中).通过Fiddler,我已经验证了在每种情况下返回的有效负载完全相同.
有任何想法吗?
解决方案:请参阅下面的答案.从我可以收集的内容“text / html”是在执行jquery / ajax / json时返回的最佳跨浏览器内容类型.
码
<script> $(function () { $('#btnSave').click(function () { $('#frmMain').ajaxSubmit({ success: function (data,statusText,xhr,$form) { alert('test success'); },fail: function (data,$form) { alert('test fail'); } }); }); }); </script> <body> <form id='frmMain' action='/test' method='post'> <!--Omit the file input below to make it work--> file: <input name='File_1' type='file' /><br /> name: <input name='json' value='{"id":5}' /><br /> <input type='button' id='btnSave' value='Save' /> </form> </body>
与文件上传(CAUSES FAIL):
呼吁没有文件上传(工作):
IE中失败的情况如下:
FF中的失败情况如下:
解决方法
经过TON的反复试验后,我遇到了
this SO post,其中@ItsJason建议将服务器的ContentType设置为“text / html”.这解决了问题,我的jQuery代码在调用我的回调方法时仍然将返回的有效负载识别为JSON.所以吸取了教训:在ajax回发期间将JSON返回给jquery时,为了实现全面的跨浏览器兼容性,请不要使用“application / json”,请使用“text / html”!!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。