From e50a737777410ced161907833f34f17766811f85 Mon Sep 17 00:00:00 2001
From: Karson <karsonzhang@163.com>
Date: Mon, 28 Aug 2017 10:49:41 +0800
Subject: [PATCH] 修复复选框、筛选列表为空时不更新的BUG 根据Ajax返回的token修改表单中token的值

---
 public/assets/js/require-form.js | 23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/public/assets/js/require-form.js b/public/assets/js/require-form.js
index 543fedd..376d54c 100755
--- a/public/assets/js/require-form.js
+++ b/public/assets/js/require-form.js
@@ -159,12 +159,31 @@ define(['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, U
                 type = type && (type === 'GET' || type === 'POST') ? type : 'GET';
                 url = form.attr("action");
                 url = url ? url : location.href;
+                //修复当存在多选项元素时提交的BUG
+                var params = {};
+                var multipleList = $("[name$='[]']");
+                if (multipleList.size() > 0) {
+                    var postFields = form.serializeArray().map(function (obj) {
+                        return $(obj).prop("name");
+                    });
+                    $.each(multipleList, function (i, j) {
+                        if (postFields.indexOf($(this).prop("name")) < 0) {
+                            params[$(this).prop("name")] = '';
+                        }
+                    });
+                }
                 //调用Ajax请求方法
                 Fast.api.ajax({
                     type: type,
                     url: url,
-                    data: form.serialize(),
-                    dataType: 'json'
+                    data: form.serialize() + (params ? '&' + $.param(params) : ''),
+                    dataType: 'json',
+                    complete: function (xhr) {
+                        var token = xhr.getResponseHeader('__token__');
+                        if (token) {
+                            $("input[name='__token__']", form).val(token);
+                        }
+                    }
                 }, function (data, ret) {
                     $('.form-group', form).removeClass('has-feedback has-success has-error');
                     if (data && typeof data === 'object' && typeof data.token !== 'undefined') {
--
libgit2 0.24.0