7
回答
关于frameset与jquery弹出层的问题
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
<frameset id="fsMain" framespacing="0" border="0" rows="60,*" frameborder="0">
  <frame name="top" scrolling="no" noresize src="top.jsp">
  <frameset id="fsContent0" cols="160,*" border="0">
	<frame name="menu" target="main" src="menu.jsp" scrolling="auto" >
    <frame name="mainContent" id="mainContent" src="welcomePage.jsp" scrolling="auto" >
  </frameset>   
</frameset>
上面是我的frameset代码,在welcomePage.jsp中使用jquery的$.dialog做了一个添加数据的弹出层,提交数据后返回结果覆盖了整个frameset,我要的效果是返回只刷新frame的mainContent这块内容,是哪里出问题,求高手解决下...
举报
秋雨
发帖于5年前 7回/2K+阅
共有7个答案 最后回答: 5年前

指定target="mainContent",就会只刷新局部frame内容了。

target要指定要刷新的frame

具体参考:http://www.w3school.com.cn/tags/att_a_target.asp

--- 共有 5 条评论 ---
MuBeiBei回复 @秋雨 : 这个肯定得有回调函数吧,用户点击确认什么的,你应该直接修改mainContent的url就行了。 5年前 回复
秋雨回复 @MuBeiBei : 我用的是lhgdialog.min.js?skin=discuz插件,这插件里面的弹出层函数$.dialog() 5年前 回复
秋雨回复 @MuBeiBei : 好的,我试试 5年前 回复
MuBeiBei回复 @秋雨 : 你先把href="javascript"去掉,href里面先写上一个固定地址,比如href="http://www.baidu.com",如果可以,那就是javascript:winopen的问题。 5年前 回复
秋雨<a href="javascript:winopen('crtRbl','添加调仓策略','rebalancer!create.do',435);" target="mainContent"> 我在A标签中已经加了target,可是就是不跳到targer指定的frame里 5年前 回复

引用来自“MuBeiBei”的答案

指定target="mainContent",就会只刷新局部frame内容了。

target要指定要刷新的frame

具体参考:http://www.w3school.com.cn/tags/att_a_target.asp

回复 @MuBeiBei
看来是JS的问题,你看下我写的JS有没有问题:
var winopen=function(id,title, url, height){
$.dialog({
id:id,
width:'700px', 
height:height==null?'auto':height+"px",
title:title,
content: 'url:' + url,
top:'143px',
    min: false,
resize: false,
lock: true,
opacity:0.3,
    background: '#000000'
});
};
--- 共有 2 条评论 ---
MuBeiBei回复 @秋雨 : 看看你修改数据后是怎么设置的? 这个是弹出框不会影响的。主要就是你弹出框的确认按钮事件,应该把url复制给$('#mainContent').attr('src',url); 5年前 回复
秋雨用的是lhgdialog.min.js?skin=discuz插件 5年前 回复

引用来自“MuBeiBei”的答案

http://api.jqueryui.com/dialog/

是支持回调函数的,你要改变mainContent的src写在回调函数里就行了。

$( "#dialog" ).dialog({
  dialogClass: "no-close",
  buttons: [
    {
      text: "OK",
      click: function() {
        $( this ).dialog( "close" );
      }
    }
  ]
});

回复 @MuBeiBei
好像就是这个问题,但我在弹出框中提交按钮后的事件处理如下:
$(document).ready( 
    function() { 
        var options = { 
            url : "rebalancer!create.do",//跳转到相应的Action 
            type : "POST",//提交方式 
            dataType : "script",//数据类型 
            success : function(msg) {//调用Action后返回过来的数据
            if (msg.indexOf("成功") > -1) {
    parent.location.href = encodeURI("rebalancer!getList.do");
    }else{
    alert(msg);
    }
            } 
        }; 
        $("#addIblRebalancer").ajaxSubmit(options);//绑定页面中form表单的id 
        return false; 
     }); 
--- 共有 2 条评论 ---
秋雨parent.location.href = encodeURI("rebalancer!getList.do"); 和location.href = encodeURI("rebalancer!getList.do");都不行 5年前 回复
秋雨我在弹出框中怎么执行$('#mainContent').attr('src',url)这个? 5年前 回复

嗯呢,就是这个问题,别用Ajax提交了,用拼接url字符串。

然后把url跟参数拼接起来,给mainContent这个frame的src赋值上请求服务器就行了。

返回内容就直接显示在mainContent这个frame里面了。

--- 共有 2 条评论 ---
秋雨还有,参数中如果有中文的,GET方法处理起来也比较麻烦 5年前 回复
秋雨我这个添加页面有10多个参数,只能拼URL这一种方法吗? 5年前 回复
<script>
    $(document).ready(  
    function() {  
        var options = {  
            url : "rebalancer!create.do",//跳转到相应的Action  
            type : "POST",//提交方式  
            dataType : "script",//数据类型  
            success : function(msg) {//调用Action后返回过来的数据 
            if (msg.indexOf("成功") > -1) { 
    //parent.location.href = encodeURI("rebalancer!getList.do"); 
            //在这个里面给mainContent赋值src。
            //$('#mainContent').attr('src','rebalancer!getList.do');
            //这样试试。
    }else{ 
    alert(msg); 
    } 
            }  
        };  
        $("#addIblRebalancer").ajaxSubmit(options);//绑定页面中form表单的id  
        return false;  
     });  


</script>
--- 共有 10 条评论 ---
秋雨回复 @MuBeiBei : 修改后就没有报JS错了 5年前 回复
秋雨回复 @MuBeiBei : 我把dataType类型已经修改成text了 5年前 回复
MuBeiBei回复 @秋雨 : 报错就会影响,下面的操作的。还有我看你dataType的类型是script,得改成json吧 5年前 回复
秋雨回复 @MuBeiBei : 嗯,但窗口显示问题与这个应该没关系吧?问题还是存在.. 5年前 回复
MuBeiBei回复 @秋雨 : js把上传成功当变量处理了 5年前 回复
顶部