jquery – Multipart Form POST导致Firefox提示JSON保存

发布时间:2020-08-11 发布网站:编程之家
编程之家收集整理的这篇文章主要介绍了jquery – Multipart Form POST导致Firefox提示JSON保存编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个问题发生在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”!!

总结

以上是编程之家为你收集整理的jquery – Multipart Form POST导致Firefox提示JSON保存全部内容,希望文章能够帮你解决jquery – Multipart Form POST导致Firefox提示JSON保存所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478
编程之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!