作者 Karson

修复复选框、筛选列表为空时不更新的BUG

根据Ajax返回的token修改表单中token的值
@@ -159,12 +159,31 @@ define(['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, U @@ -159,12 +159,31 @@ define(['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, U
159 type = type && (type === 'GET' || type === 'POST') ? type : 'GET'; 159 type = type && (type === 'GET' || type === 'POST') ? type : 'GET';
160 url = form.attr("action"); 160 url = form.attr("action");
161 url = url ? url : location.href; 161 url = url ? url : location.href;
  162 + //修复当存在多选项元素时提交的BUG
  163 + var params = {};
  164 + var multipleList = $("[name$='[]']");
  165 + if (multipleList.size() > 0) {
  166 + var postFields = form.serializeArray().map(function (obj) {
  167 + return $(obj).prop("name");
  168 + });
  169 + $.each(multipleList, function (i, j) {
  170 + if (postFields.indexOf($(this).prop("name")) < 0) {
  171 + params[$(this).prop("name")] = '';
  172 + }
  173 + });
  174 + }
162 //调用Ajax请求方法 175 //调用Ajax请求方法
163 Fast.api.ajax({ 176 Fast.api.ajax({
164 type: type, 177 type: type,
165 url: url, 178 url: url,
166 - data: form.serialize(),  
167 - dataType: 'json' 179 + data: form.serialize() + (params ? '&' + $.param(params) : ''),
  180 + dataType: 'json',
  181 + complete: function (xhr) {
  182 + var token = xhr.getResponseHeader('__token__');
  183 + if (token) {
  184 + $("input[name='__token__']", form).val(token);
  185 + }
  186 + }
168 }, function (data, ret) { 187 }, function (data, ret) {
169 $('.form-group', form).removeClass('has-feedback has-success has-error'); 188 $('.form-group', form).removeClass('has-feedback has-success has-error');
170 if (data && typeof data === 'object' && typeof data.token !== 'undefined') { 189 if (data && typeof data === 'object' && typeof data.token !== 'undefined') {