使用AJAX异步提交图片表单
2017-05-22 13:24
417 查看
前言
个人博客在进行后台上传图片时候出现了跨域问题,具体如下:Load denied by X-Frame-Options: http://localhost:8080 does not permit cross-origin framing Refused to display in a frame because it set 'X-Frame-Options' to origin
从代码中我们看出提示的错误是说我们获取iframe时候跨域了,但是我并不是这样的情况,我个人的情况是iframe是通过js动态生成的,就处于当前页面中。我个人也探索了很久一直没有得到好的解决方案,后来和同学的交流中觉得使用ajax表单上传图片更安全一点。
如果某些朋友确实是跨域的问题,请参考这篇文章http://blog.csdn.net/fdipzone/article/details/17619673
ajax上传图片
ajax本来是不支持的文件的提交的我们使用ajax提交需要借助jquery的插件,下载地址ajaxform插件
案例演示
1.引入jquery.js和jquery.from.js2.from表单
<form id="myForm" action="/image/upload" method="post" enctype="multipart/form-data"> url: <input type="text" name="name" /> <input type="submit" value="上传图片" /> </form>
3.js代码
//上传图片触发事件 dialog.find("[type=\"submit\"]").bind("click", submitHandler).trigger("click"); //成功callback var options = { success: showResponse, // post-submit callback timeout: 5000 }; var submitHandler = function() { $("form").ajaxForm(options); }); // post-submit callback //responseText后端响应的数据 function showResponse(responseText, statusText, xhr, $form) { if (responseText.success === 1) { dialog.find("[data-url]").val(responseText.url); } else { alert(responseText.message); } } return false; });
结语
本文只是针对个人角度描述一下解决跨域问题的方法,并不保证针对每个人的不同的情况都起作用。本文的例子只是举例,运行还需要额外的条件,大致思路是这样子。如果本文有什么纰漏的地方欢迎留言指正,本人前端的水平有限。
与君共勉!!!
最后说几句
个人博客已经开源,采用spring boot+thymeleaf模板。代码已经托管在github项目源码欢迎各位朋友去fork and star,同时我也鼓励大家进行二次开发,也可以加入我,和我一起维护这个项目。
相关文章推荐
- [Ajax] 使用Ajax异步上传图片文件(非Form表单提交)
- 查询条件表单使用ajax异步提交
- 使用AJAX异步提交表单的几种方式
- 使用AJAX异步提交表单的几种方式
- ajax异步请求提交上传图片表单并预览图片
- 使用AJAX异步提交表单的几种方式
- ajax 请求后台数据(及使用FormData对象提交表单及上传图片)
- 使用AJAX异步提交表单的几种方式
- 使用jQuery实现Ajax异步提交表单实现局部刷新
- Struts2中的异步提交(ajaxfileupload异步上传(图片)插件的使用)
- jquery多选择动态参数的使用以及ajax异步请求中提交整个form表单中serializeArray()的使用以及后台值得获取方式
- 使用ajax异步提交表单
- ajax异步请求提交上传图片表单并预览图片
- 使用ajax异步提交表单的几种方法总结
- 使用Ajax选取ListBox的值异步更新视图,并作为表单值提交
- C# Asp.net使用FormData对象实现ajax提交表单及上传图片
- 表单提交前onclick使用reuturn时,ajax请求同步异步的一点注意事项
- from表单使用ajax异步提交
- 使用Jquery的Ajax异步提交有二进制数据的表单实现方案