前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EXTJS7 BUG分析解决 form启用xhr2提交丢失所有表单数据

EXTJS7 BUG分析解决 form启用xhr2提交丢失所有表单数据

作者头像
路过君
发布2020-06-19 16:44:49
3080
发布2020-06-19 16:44:49
举报

表单提交启用xhr2时会丢失所有表单数据

代码语言:javascript
复制
form.submit({
	xhr2: true
	...
});

源码

  • form/Panel.js
代码语言:javascript
复制
...
beforeAjaxSubmit: function(form, options, successFn, failureFn) {
	...
	if (Ext.feature.has.XHR2 && request.xhr2) {
        delete request.form;
		// 此处将表单值存入request.data有误,后续请求并没有从request.data取值
		// 可通过override: 'Ext.form.Panel'覆盖此方法修订,改为:
		// formData = request.rawData = new FormData(form);
        formData = request.data = new FormData(form);

        if (request.params) {
            Ext.iterate(request.params, function(name, value) {
                if (Ext.isArray(value)) {
                    Ext.each(value, function(v) {
                        formData.append(name, v);
                    });
                }
                else {
                    formData.append(name, value);
                }
            });

            delete request.params;
        }
    }
	...
}
...
  • Ext.data.Connection
代码语言:javascript
复制
...
// 发起请求
request: function(options) {
    ...
   	// 装填请求信息
    requestOptions = me.setOptions(options, options.scope || Ext.global);
    request = me.createRequest(options, requestOptions);
    return request.start(requestOptions.data);
    ...
},
...
setOptions: function(options, scope) {
	...
	// 并没有使用options.data
	data = options.rawData || options.binaryData || options.xmlData || jsonData || null;
	...
	return {
        url: url,
        method: method,
        data: data || params || null
    };
}
...
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 表单提交启用xhr2时会丢失所有表单数据
  • 源码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档