最近用康盛品牌空间,GBK编码的,自己写的AJAX提交(用的jQuery.fn.serialize)会乱码,只好mb_convert_encoding转过来。康盛程序中对请求数据都不用转码,这是怎么回事。以前也看过康盛的AJAX,没搞懂放弃了,决定研究下康盛的AJAX。
看了好一会,大体思路是,表单提交时,修改表单的target属性指向一个新建的隐藏的iframe。我去,这也行。(以前为了保存表单数据,让表单target=_blank,有点类似)。提交后返回的内容在iframe中,用onload事件通知回调,获取文档内容作为返回数据。
这样既可以AJAX上传文件,GBK网页不用转码,给力。可是使用过程不简单,习惯了jQuery的AJAX,这个比jQuery的AJAX好像欠缺点(超时处理没有吧),要是像jQuery的一样使用就好了。多次见过ajaxForm,ajaxSubmit的插件,没认真学习,记得有很多不知干啥的代码,会不会有这个功能呢。看看!哈,有iframe,估计就有这个功能。学学!
哈哈,好东西,正是想要的,超出想象。
弄点代码测试下,OK。
IE7下不行,IE8+行;
手机上的Android4.1自带浏览器也可以;
手机上QQ浏览器文件选择控件不起作用,不知怎么搞的
插件官方网站:http://malsup.com/jquery/form/
推荐一个中文介绍:http://my.oschina.net/adamboy/blog/38027
如果指定iframe选项为true,会使用iframe方式;
如果可以使用window.FormData(),会使用JS+XHR发送数据。
var formData = new FormData();
formData.append(el.name, el.value);
把formData作为jQuery选项
还支持进度条呢
以后再说!