DWZ官方文档中关于文件上传表单的提交:

因为Ajax不支持enctype="multipart/form-data" 所以用隐藏iframe来处理无刷新表单提交.

<form method="post" action="url" class="pageForm required-validate" enctype="multipart/form-data"
onsubmit="return iframeCallback(this, [navTabAjaxDone/dialogAjaxDone]);">

服务器端响应
DWZ-v1.2版本开始服务器返回和validateCallback格式保持一致:

{
"statusCode":"200",
"message":"操作成功",
"navTabId":"",
"rel":"",
"callbackType":"closeCurrent",
"forwardUrl":""
}

第一个坑是,因为要上传文件,所以表单必须使用隐藏iframe的方式来处理,可是服务端返回的数据必须是JSON格式的,而不能使html,所以处理后的数据就不能展示了,只能说是提示操作状态。

第二个坑是,因为上传文件后在服务端分析数据后需要去展示,所以想着以弹窗的方式去展示,却发现了另外一个坑,事情是这样的:

dialog链接扩展:

<a href=”xxx” target=“dialog” [rel=“dialogId”]>

A所指向页面将会在dialog 弹出层中打开,rel标识此弹出层的ID,rel为可选项。

Html标签扩展方式示例:

<a href="w_dialog.html" target="dialog" rel="page2">弹出窗口</a>

<a href="demo_page1.html" target="dialog" [max=true, mask=true, maxable=true, minable=true, resizable=true,drawable=true]
rel="dlg_page1" title="[自定义标题]" width="800" height="480">打开窗口一</a>

关闭窗口:
在弹出窗口页面内放置<button class="close" value="关闭"></button>即可。

JS调用方法示例:

$.pdialog.open(url, dlgId, title);

$.pdialog.open(url, dlgId, title, options); 

也就是说要想在页面打开一个弹窗,就必须要加载一个页面,指定一个地址,不然的话就给你报错。。。为啥不能展示本地数据呢。。。好蛋疼的设计。

为了展示数据,于是乎在分析完文件数据后将结果存到了memcache中,然后返回一个Key放到了返回json中,好在可以自定义回调函数,将key放到一个连接中通过jQ模拟提交,通过另一个页面展示出来。擦,好纠结的业务逻辑。。。泪奔了。。。

自定义的回调函数:

    // 弹出被覆盖的数据
function customAjaxDone(json){
if (json.statusCode == DWZ.statusCode.ok){
if (json.content.toString() == "xxx"){
DWZ.ajaxDone(json);
} else {
$("#xxx").attr("href", "{{ wrap_url('xxx/show_replace_data?hash=')}}" + json.content);
$("#xxx").click();
}
}
else{
DWZ.ajaxDone(json);
}
}

表单事件:

onsubmit="return iframeCallback(this, customAjaxDone);"

DWZ使用中遇到的坑的更多相关文章

  1. sql server全文索引使用中的小坑

    一.业务场景 我们在实际生产环境中遇到了这样一种需求,即需要检索一个父子关系的子树数据 估计大家也遇到过类似的场景,最典型的就是省市数据,其中path字段是按层级关系生成的行政区路径: 如果我们已知某 ...

  2. Volly框架的使用基础版及使用中的一些坑 Ace 网络篇(三)

    直接把注释粘过来: * Volley使用讲解: * 要实现网络数据请求主要要记住下面三步骤: * 1.创建RequestQueue对象 * 2.创建XXRequest对象(XX代表String,JSO ...

  3. c#参数传递使用中的一个坑,值传递与引用传递

    c#参数传递使用中发现的一个问题 写了3个重载方法,把 对象.int .(int直接封入object) 传入SWAP方法进行数据操作结果对象内的数据发生了改变,其他2个没有:

  4. lua 使用中遇到的坑总结

    前言 竹子是 java 程序员一枚,最近在做一个登录的改造,用 lua 实现,现在基本算是告一段落,然后在此分享下在过程中遇到的坑吧. 一定要注意使用 lua 的版本,版本不同,可能有的函数就没有了, ...

  5. sql server全文索引使用中的小坑 (转载)

    一.业务场景 我们在实际生产环境中遇到了这样一种需求,即需要检索一个父子关系的子树数据 估计大家也遇到过类似的场景,最典型的就是省市数据,其中path字段是按层级关系生成的行政区路径: 如果我们已知某 ...

  6. spring cloud zuul在使用中遇到的坑 : 转发时自动去掉prefix

    在使用zuul的时候遇到的坑总结一下: 逐渐增加更新以后遇到的 1.在路由的时候莫名其妙的把serviceId给去掉,导致404.比如请求:/serviceId/search/book,zuul会把s ...

  7. Maven学习(六)maven使用中遇到的坑

    坑1:使用eclipse构建web项目时,pom.xml中 <packaging>war</packaging> 报错 eclipse给出的报错信息提示是:web.xml is ...

  8. kubernetes使用中遇到的坑

    随着kubernetes的发展现在使用的范围越来越广,在使用过程中碰到问题是避免不了的,有些时候一些坑能提前避免是最好的,下面我做一个小记录,把我们生产环境中遇到的坑总结下,方便后面查询同时也方便各位 ...

  9. 解决 mklink 使用中的各种坑(硬链接,软链接/符号链接,目录链接)

    通过 mklink 命令可以创建文件或文件夹的链接,而这种链接跟快捷方式是不一样的.然而我们还可能会遇到其使用过程中的一些坑,本文将整理这些坑并提供解决方法.   0x00 背景介绍:mklink m ...

随机推荐

  1. HDU.2516.取石子游戏(博弈论 Fibonacci Nim)

    题目链接 \(Description\) 1堆石子有n个.两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍,取完者胜.问谁能赢. \(Solution ...

  2. 关于css的一些特别用法

    (1)input 怎么设置宽高用style来设置,<input style="width:111px;height:111px">(2)怎么让img和input在同一行 ...

  3. mysql安装后不是内部或外部命令解决

    在环境变量中配置mysql的bin 怎么找到bin目录,在管理工具,服务,常规选项卡下找到 双击mysql后,常规选项卡下的路径就是bin的路径,然后把该路径配置到环境变量中,即可,然后net sta ...

  4. javascript中的LHS与RHS

    最近在学习javascript过程中,接触了LHS与RHS的概念,刚开始的时候有点理解不清,现在做一些梳理,方便以后进行理解. LHS与RHS:javascript引擎的两种查找类型,含义是赋值操作的 ...

  5. spring源码分析系列 (3) spring拓展接口InstantiationAwareBeanPostProcessor

    更多文章点击--spring源码分析系列 主要分析内容: 一.InstantiationAwareBeanPostProcessor简述与demo示例 二.InstantiationAwareBean ...

  6. AngularJS中ui-router全攻略

    首先是angular-ui-router的基本用法. ■ 如何引用依赖angular-ui-router angular.module('app',["ui.router"]) . ...

  7. 【转】Intellij IDEA调试功能

    http://www.cnblogs.com/winner-0715/p/5422952.html 先编译好要调试的程序.1.设置断点

  8. iOS开发-观察者模式

    观察者模式也被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己.观察者模式中 ...

  9. chromium 使用 flash

    这又是个月经问题,几乎重装一次系统就得在搞一次. 1. chromium 使用的 flash 下载 https://get.adobe.com/cn/flashplayer/otherversions ...

  10. 【PMP】变更流程图与说明

    点击下载viso原件 以下是变更流程说明: 1.团队成员判定不需要变更 发起人提出变更请求,团队成员对该变更进行分析与评估影响,通过判断后,如果决定不需要变,那么就编写反馈报告提交给相关方确认,相关方 ...