2 zhaohaibo 1988 zhaohaibo_1988 于 2016.03.15 12:36 提问

EXT跨域能不能返回一个页面
ext

目前需求A工程调用另外B工程,再通过登录验证以后B工程展示的页面嵌套在A工程的某个地方,在网上看了一下ext跨域请求,返回的是某个结果,所以就不太清楚能不能跨域请求返回一个页面,而这个页面的功能比如查询对应的是B工程的查询,可以直接通过这个查询按钮查出B工程的结果,也就是说A工程展示的是B工程查询的结果

3个回答

u014481698
u014481698   2016.03.15 13:48

实现是可以实现。两个跨域的界面是可以对话的。
之前做过一个类似实现。
引入的一个js文件:
(function(global){
global.Cross = {
signalHandler: {},
on: function(signal, func){
this.signalHandler[signal] = func;
},
call: function(win, domain, signal, data, callbackfunc){
var notice = {"signal": signal, "data": data};
if(!!callbackfunc){
notice["callback"] = "callback_" + new Date().getTime();
Cross.on(notice["callback"], callbackfunc);
}
var noticeStr = JSON.stringify(notice);
win.postMessage(noticeStr, domain);
}
};

$(window).on("message", function(e) {
var realEvent = e.originalEvent,
data = realEvent.data,
swin = realEvent.source,
origin = realEvent.origin,
protocol;
try {
protocol = JSON.parse(data);
var result = global.Cross.signalHandler[protocol.signal].call(null, protocol.data);
if(!!protocol["callback"]){
Cross.call(swin, origin, protocol["callback"], {result: result});
}
if(/^callback_/.test(protocol.signal)){
delete Cross.signalHandler[protocol.signal];
}
} catch (e) {
console.log(e);
throw new Error("cross error.");
}
});
})(window);

-----end

B页面
//对外公开一个接口命名为test
Cross.on("getContent", function(data){
Cross.call(parent,data.domain,"saveContent",{content:UE.getEditor('editor').getContent()});
parentDomain = data.domain;
});
调用父页面A提供的接口
Cross.call(parent,data.domain,"setContent",{content:UE.getEditor('editor').getContent()});

    A页面
     Cross.call($("#ueditor")[0].contentWindow,"${ptp_up}","onblur",{domain:'${basePath}'});
    调用子页面B里面公开的接口


    原来项目我没权限了,只能找一下文件。看看能明白大概意思不。这是当时想到的一种解决方案。
u014481698
u014481698   2016.03.15 13:50

Cross.on("onblur", function(data){
UE.getEditor('editor').ui.setFullScreen(false);
});

选的子页面接口不太好。这个是提供的onblur方法(B页面)
showbo
showbo   Ds   Rxr 2016.03.15 14:39

a直接iframe b的页面,ext你的跨域不懂指什么方面的,如果用ajax跨域请求需要设置被请求页面access control allow origin响应头的,要不跨域报错。

zhaohaibo_1988
zhaohaibo_1988 a的iframe请求到了一个登陆验证的servlet,然后再去跳转到b的action
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
extJs中通过jQuery的ajax进行跨域(即jsonp进行跨域)获取数据
extJs中通过jQuery的ajax进行跨域(即jsonp进行跨域)获取数据
研究ext发现ajax跨域实现
之前一直没有深入研究过ajax跨域实现的问题,最近研究ext发现他的例子里可以请求远程的页面,它的方法叫scrīptTag。其实就是使用动态载入js脚本的方式来实现的。转一个文章过来,具体就不写了,ext是通过传一个callbak方法动服务器页面,在返回结果中加上执行 callbak方法,总得来说服务器代码还要自己可以控制,如果完全想读别人的数据还是做不到。作者:zhanglp888用json和s
(Ext / Js) ajax 跨域请求发送两次解决方案
我的项目都是前后端分离,在用ajax请求的时候总是会发送两次请求,一次OPTIONS(预检请求),一次正常的POST(OR GET)。通过浏览器的开发者调试工具(network)可以看到options请求不会带上任何参数,返回null(其实返回值可以在后台设置)。第二条请求才是我们想要的真正的请求。 这个问题可以说并不是个问题,浏览器发现跨域时,会附加一次options请求。去判断是否是安全的
ExtJs使用ajax跨域上传文件
对ExtJs使用rawData上传的部分代码进行了分析,并提出了使用ExtJs的Ajax跨域上传文件的一种方法。
通过Iframe跨域获取其它站的数据 或获取某页面及数据
通过Iframe在A网站页面内嵌入空白页面的方式,跨域获取B网站的数据返回给A网站! 以下代码只是为演示该方法具体是如何操作的,实际的意义并不大。 其实这个方法还可以解决很多方面的跨域操作,以下两点为我工作中遇到的情况! 比如A系统中打开B系统页面的时候,获取B系统页面高度,A系统中可以动态设置窗口的高度 还有A系统中打开B系统页面的时候,B系统页面进行一系列操作,操作
extjs 跨域问题
items.push({     xtype: "grid",     ref: "capsGrid", // makes the grid available as app.capsGrid     title: "Available Layers",     region: "north",     height: 150,     viewConfig: {forceFit: t
使用extjs,来实现一个页面调用另一个页面中的方法,并且能获得方法的返回值
var conn = Ext.lib.Ajax.getConnectionObject().conn; conn.open("POST", url, false); conn.send("发送到服务器端的信息"); if(conn.status==200)
ExtJs Ajax 跨域问题的解决办法(Jsonp)
传统的方法是这样: Ext.Ajax.request({     url:'http://www.xialeistudio.net/index.php?s=/Index/getNews/nums/5',     success:function(resp,opt){         //结果处理部分略过     } }); 这样你认为是没有问题的,但是现实是js默认是不允许跨域的。所以
frameset跨域问题解决
a嵌入了b中的main.jsp页面,在main中添加:使用Response.setHeader("P3P","CP=CAO PSA OUR");以下是网上找到的一些参考:来自 整合客户的登录时,或者其他一个网站通过iframe时,特别是一个http页面,访问一个https页面时,常常会session失效!1、由于IE的安全限制,将父页面所在域加入信任站点就OK了!2、当“父
window.showModalDialog打开跨域的页面并取到返回值
主页面用window.showModalDialog的时候,如果直接打开其它系统的页面,这时候别人的页面在window.returnValue=1;这样返回值的时候,主页面是取不到返回值的,原因就是因为跨域了.