Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网站建设 > ASP.NET > 用XMLHTTP和WEB资源交换数据(一)
【标  题】:用XMLHTTP和WEB资源交换数据(一)
【关键字】:XMLHTTP,WEB
【来  源】:http://blog.csdn.net/kagad/archive/2006/07/24/969873.aspx

用XMLHTTP和WEB资源交换数据(一)

Your Ad Here

     由于XMLHTTP的渐渐流行,现在不少系统之间的数据交换开始流行用XML作为数据载体以HTTP方式进行传输,不知道这是不是WEBSERVERS的一种不标准的实现方式。通常 ,我们知道WEBSERVERS也是建立在XML之上的,但是它使用起来确实非常方便,因为我们可以获得一个服务的实例可以方便的调用它有的方法。但是XMLHTTP这个随着AJAX火起来的东东,我想可能就不是那么简单好用了,因为我确实没有用他来作个和其他系统的接口。

   而这种事情就让我遇上了,因为项目需要,我们要从其它系统获取数据,对方本来说提供WEBSERVERS给我们,但是后来却告述我们这样一个接口方案:双方以协定的xml文档,系统以xmlhttp方式进行消息传递。在AJAX中也知道XMLHTTP这种方式,那就弄吧。

    先创建一个XMLHTTP对象:

function CreateActiveObject()

{//初始化 var http_request = false; //开始初始化XMLHttpRequest对象

 if(window.XMLHttpRequest)

{ //Mozilla 浏览器 http_request = new XMLHttpRequest();

 if (http_request.overrideMimeType)

 {//设置MiME类别 http_request.overrideMimeType("text/xml"); } }

else if (window.ActiveXObject)

 { // IE浏览器

try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); }

catch (e)

{ try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); }

catch (e) {} } }

return http_request;

}

接下来就准备XML数据给他POST过去吧

function GetXml(phone,startTime,endTime)

{ var head="";

var body="";

var foot = "";

return head+body+foot; }

function clickServer(phone,startTime,endTime)

{ xmlHttp = CreateActiveObject();

 if(!xmlHttp) { window.alert("不能创建XMLHttpRequest对象实例.");

 return false; }

else

{ xmlHttp.onreadystatechange = processRequest; // 确定发送请求的方式和URL以及是否同步执行下段代码

var xmlMsg = GetXml(phone,startTime,endTime) ;

 xmlHttp.open("post", http://111.111.111/aaa, false);

 xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlHttp.send(xmlMsg); }

}

// 处理返回信息的函数

 function processRequest()

 { if (xmlHttp.readyState == 4) { // 判断对象状态

if (xmlHttp.status == 200) { // 信息已经成功返回,开始处理信息

 processXml(xmlHttp.responseXml); }

else { //页面不正常 alert(xmlHttp.status+'数据查询失败!'); }

} }

把返回的XML解析成一个TABLE放到页面去

前提是页面要有一个TABLE的定义:

/*<table width=100% height=50 border=0>
<tbody id="xmlBody"></tbody>
</table>*/

function processXml(xmlText)

 { var xmlDom =createXmlDom();

 if(xmlDom != null)

{ xmlDom.loadXML(xmlText.xml);

var result = xmlDom.getElementsByTagName("Result");

for(var i=0;i<resul.length;++i)

{

var column1 = document.createElement('td');

var colValue1 = document.createTextNode(result[i].getAttribute('RecTime'));

column1.appendChild(colValue1);

var column2 = document.createElement('td');

var colValue2 = document.createTextNode(result[i].getAttribute('BugPheno'));

 column2.appendChild(colValue2);

var column3 = document.createElement('td');

 var colValue3 = document.createTextNode(result[i].getAttribute('ClearTime'));

column3.appendChild(colValue3);

var column4 = document.createElement('td');

 var colValue4 = document.createTextNode(result[i].getAttribute('BugReason'));

column4.appendChild(colValue4);

 var column5 = document.createElement('td');

 var colValue5 = document.createTextNode(result[i].getAttribute('HdlUser'));

 column5.appendChild(colValue5);

 var column6 = document.createElement('td');

 var colValue6 = document.createTextNode(result[i].getAttribute('State'));

column6.appendChild(colValue6);

var row = document.createElement('tr');

 row.appendChild(column1);

row.appendChild(column2);

row.appendChild(column3);

row.appendChild(column4);

 row.appendChild(column5);

row.appendChild(column6);

 document.getElementById('xmlBody').appendChild(row);

}

}

}

function createXmlDom()
{
 var signatures =["MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","Microsoft.XmlDom"];
 for(var i=0;i<signatures.length;++i)
 {
  try
  {
   var domDoc=new ActiveXObject(signatures[i]);
   return domDoc;
  }
  catch(e){}
 }
 return null;
}

上面做了以后,已经达到了交换数据的效果,但是却由此产生了两个问题,一个是XMLHTTP中JAVASCRIPT的跨域访问的问题,虽然IE只是给出一个警告,但是客户不知道还以为系统有问题呢,二是用了ACTIVEX,而现在很多浏览器都是关闭了ACTIVEX的,这两个虽然都不是大问题,但总是不好,因为没有对客户屏蔽掉。

于是又在想有没有其他的方式呢,最后明白服务器后台也可以实现XMLHTTP,但是有了和服务器的交互,效率可能会下降,但是没有了警告提示,没有了ACTIVEX,客户没有意见了,哎,那就这样弄吧。

基于Flex+PHP+MySQL架构的Blog:【上一篇】
《ASP网络编程》学习笔记之一:【下一篇】
【相关文章】
  • C#中WebBrowser的使用
  • asp.net 创建 xml web service 设计指南
  • java web开发,bean数据放在request、response还是servletcontext中?
  • 在VC++6.0中调用Web Services的方法
  • Web服务器安全强化(思路)
  • 将附件上传到非WEB服务器时的问题
  • WEB服务和Windows Media Server的区别
  • Web编程防黑,遵循特定的web安全规范
  • 《应用Rails进行敏捷Web开发》上市
  • Biztalk 开发之 调用Web Services
  • 【随机文章】
  • 确认CPU的主频
  • 关于NET的一篇好文章(大家可以学习一下哈)
  • SQL Injection(二)――Hex Attack
  • 大型协议软件设计之路(2)--需求分析
  • 在Linux环境下使用ReiserFS文件系统
  • Open the windows explorer with a file selected in eclipse...
  • ASP.NET 2.0移动开发入门之基础
  • 第十章 执行环境
  • Oracle触发器和内置程序包
  • Configuration DataSource At WebSphere6
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.