SelectPage icon indicating copy to clipboard operation
SelectPage copied to clipboard

初始值 传递额外数据

Open yiqing-95 opened this issue 5 years ago • 2 comments

对于post 请求 一般会附加 csrftoken 如果后台需要这个值 在初始值ajax请求时 需要客户端传递这个数据

// SelectPage.prototype.setInitRecord

if (typeof p.data === 'object') {
				var data = new Array();
				var keyarr = key.split(',');
				$.each(keyarr,function(index,row){
					for (var i = 0; i < p.data.length; i++) {
						if (p.data[i][p.keyField] == row) {
							data.push(p.data[i]);
							break;
						}
					}
				});
				if(!p.multiple && data.length > 1) data = [data[0]];
				self.afterInit(self, data);
			} else {//ajax data source mode to init selected item
				$.ajax({
					dataType: 'json',
                    type: 'POST',
					url: p.data,
                                      //  这里 需要传递额外数据
					data: {
						searchTable: p.dbTable,
						searchKey: p.keyField,
						searchValue: key
					},
					success: function(json) {
                        var d = null;
                        if(p.eAjaxSuccess && $.isFunction(p.eAjaxSuccess)) d = p.eAjaxSuccess(json);
                        self.afterInit(self, d.list);
					},
					error: function() {
						self.ajaxErrorNotify(self);
					}
				});
			}

在data 处需要暴露接口来传递csrfToken 注意到了 在 SelectPage.prototype.searchForDb 里面 params参数这种形式可以返回额外数据

但在setInitRecord 方法实现中 没有使用 params参数的值 这样想传递额外数据 可能就不方便了

yiqing-95 avatar May 02 '19 14:05 yiqing-95

当然 通过一些看起来比较“脏”的补丁方法 也可以实现 只不过不是那么“优雅”:

  // 添加额外的 csrf token值
        $.ajaxSetup({
            beforeSend: function(jqXHR, settings) {
                var csrfParam = $('meta[name=csrf-param]').attr('content') ;
                var csrfToken =  $('meta[name=csrf-token]').attr('content') ;
                // this.data += '&' + $.param({
                //     key: 'value'
                // });
                this.data += '&'+csrfParam+'='+csrfToken
            }
        });

目前先用这种方法搞了 不然就要去改源码添加这个口子了

yiqing-95 avatar May 03 '19 02:05 yiqing-95

往前翻了下 issues 发现前面有人已经提过了 #84

yiqing-95 avatar May 03 '19 03:05 yiqing-95