起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3832|回复: 2

[结贴] 在参考动作案例里的form表单post方式提交的时候,提交多次...

[复制链接]

4

主题

10

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
QQ
发表于 2017-8-21 09:40:05 | 显示全部楼层 |阅读模式
版本: BeX5V3.5 小版本号:
数据库: MySQL 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: Windows 7 浏览器: Chrome
代码如下:
Model.prototype.postBtnClick = function(event){
                // 输出执行代码
                TextOut.setText(code, arguments.callee.toString());
       
                var form = this.getElementByXid("postForm");
                var uploadFileName = this.getElementByXid("uploadFileName");
                var uploadFile = this.getElementByXid("uploadFile");
                var postResultIframe = this.getElementByXid("postResultIframe");
               
                // form表单提交对应的请求URL是"$UI/system/service/common/bizAction.j",但提交前需要进行URL转换,在URL上补足bsessionid等必要信息
                var url = require.toUrl("$UI/system/service/common/bizAction.j?bsessionid=" + this.getContext().getBSessionID());
                // 将转换后的URL设置到form表单上
                form.attributes["action"].value = url;
                // 设置文件名参数域,文件名中的中文需要编码encodeURI,在Action的java中再解码decode
                $(uploadFileName).val(window.encodeURI($(uploadFile).val()));
       
                // 在form目标iframe的onload事件中以回调方式获取返回值
                var parentWindow = window;
                $(postResultIframe).load(function(){
                alert("aaa");
                        var iframeWindow = this.contentWindow;
                        iframeWindow.setTimeout(function() {
                                var doc = iframeWindow.document.XMLDocument ? iframeWindow.document.XMLDocument : iframeWindow.document;
       
                                // 判断动作调用是否成功
                                var flag = $(doc).find("flag").text();
                                if (flag == "true") {
                                        justep.Util.hint("form表单方式调用动作成功");
                                       
                                        // 输出返回结果
                                        var data = $(doc).find("data").text();
                                        TextOut.setText(result, data);
                                } else {
                                        justep.Util.hint("form表单方式调用动作失败");
       
                                        // 抛出错误信息
                                        var message = $(doc).find("message").text();
                                        TextOut.setText(result, message);
                                }
                        }, 1);
                });
       
                // 提交表单
                $(form).submit();
        };


4

主题

10

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
QQ
 楼主| 发表于 2017-8-21 09:45:08 | 显示全部楼层
我在代码里调试后发现:
第一次提交没有问题,第二次提交会执行两次,第三次会执行三次,怎么做才能解决这个问题呢?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35924
发表于 2017-8-21 11:13:47 | 显示全部楼层
修改一下代码
  1. var postResultIframe = this.getElementByXid("postResultIframe");
  2.                 $(postResultIframe).load(function(){
  3.                         var iframeWindow = this.contentWindow;
  4.                         iframeWindow.setTimeout(function() {
  5.                                 var doc = iframeWindow.document.XMLDocument ? iframeWindow.document.XMLDocument : iframeWindow.document;
  6.        
  7.                                 // 判断动作调用是否成功
  8.                                 var flag = $(doc).find("flag").text();
  9.                                 if (flag == "true") {
  10.                                         justep.Util.hint("form表单方式调用动作成功");
  11.                                        
  12.                                         // 输出返回结果
  13.                                         var data = $(doc).find("data").text();
  14.                                         TextOut.setText(result, data);
  15.                                 } else {
  16.                                         justep.Util.hint("form表单方式调用动作失败");
  17.        
  18.                                         // 抛出错误信息
  19.                                         var message = $(doc).find("message").text();
  20.                                         TextOut.setText(result, message);
  21.                                 }
  22.                         }, 1);
  23.                 });
复制代码


放到model的onload事件中
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-8 10:33 , Processed in 0.089463 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表