EXTJS7 BUG分析解決 form啓用xhr2提交丟失所有表單數據

表單提交啓用xhr2時會丟失所有表單數據

form.submit({
	xhr2: true
	...
});

源碼

  • form/Panel.js
...
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
...
// 發起請求
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
    };
}
...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章