HTML5 jsp .net,.NET与JSP页面之间消息通讯(跨域,使用html5的postMessage实现)

最近.NET项目上使用JAVA项目中的jsp页面,使用到跨域的信息交互。

jsp端代码,通过监听来自.NET项目所在IP地址,来请求.NET一般处理程序,实现jsp交互信息保存到.NET中:

window.addEventListener('message', function(event){

// 通过origin属性判断消息来源地址

if (event.origin == 'http://192.168.11.195') {

if(event.data=='1'){

var xmlStr = getXmlStr();

var sysId1= '1111222';

var userId1 = '22211112';

var menus1 = xmlStr;

var callback1='?';

var url = 'http://192.168.11.195/BPMS/WebService/MessageExchange.ashx';

$.ajax({

url:url,

data: {sysId:sysId1,userId:userId1,menus:menus1,callback:callback1},

dataType:'jsonp',

type:'post',

processData: true,

success:function(data){

alert(data);

},

error:function(XMLHttpRequest, textStatus, errorThrown) {

alert(XMLHttpRequest.status);

alert(XMLHttpRequest.readyState);

}

});

}

}

}, false);

.NET页面代码,主要是通过向jsp端页面发送带标记请求信息:

$(function () {

$("#btn").click(function () {

test();

});

function test() {

var ifr = document.getElementById('iframe');

var targetOrigin = 'http://192.168.11.10:8080';

ifr.contentWindow.postMessage('1', targetOrigin);

};

});

MessageExchange.ashx代码如下:

using AT.DataBase.SqlServer;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Web;

namespace AT.Web.WebService

{

///

/// MessageExchange 的摘要说明

///

public class MessageExchange : IHttpHandler

{

public void ProcessRequest(HttpContext context)

{

context.Response.ContentType = "text/plain";

string callback = (context.Request["callback"] ?? "").ToString();

string sysId = (context.Request["sysId"] ?? "").ToString();

string userId = (context.Request["userId"] ?? "").ToString();

string menu = (context.Request["menus"] ?? "").ToString();

string msg = SaveMessage(sysId, userId, menu);

context.Response.Write(msg);

context.Response.End();

}

///

/// 保存业务逻辑

///

///

///

public string SaveMessage(string sysId, string userId, string menu)

{

SqlServerHelper db = new SqlServerHelper("Server=192.168.11.201;Database=AT_UnifiedAuthorityDB;Uid=sa;Pwd=apesm;");

StringBuilder sb = new StringBuilder();

sb.Append("insert into Test(T1,T2,T3) values('" + sysId + "','" + userId + "','" + menu + "')");

int cnt = db.ExecuteBySql(sb);

if (cnt > 0)

{

return "OK";

}

else

{

return "NO";

}

}

public bool IsReusable

{

get

{

return false;

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值