发布于 2016-06-06 04:58:27 | 125 次阅读 | 评论: 1 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

ASP.NET

ASP.NET 是.NET FrameWork的一部分,是一项微软公司的技术,是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术,它可以在通过HTTP请求文档时再在Web服务器上动态创建它们。 指 Active Server Pages(动态服务器页面) ,运行于 IIS(Internet Information Server 服务,是Windows开发的Web服务器)之中的程序 。


异步调用webservice返回responseXML为空,详细很多朋友都遇到过类似的问题吧,接下来为大家提供详细的解决方案,感兴趣的朋友可以参考下哈
先总结几个要领
1)要熟悉javascript对XML文件的加载与操作;
DOM的XML操作可参考的示例:http://www.w3school.com.cn/xmldom/met_document_getelementsbytagname.asp
2)在IE下面还是要通过loadXML来转responseText;
3)xml加载后异步属性设置;
4)命名空间处理等问题;
下面上代码:
========ASPX前台代码========
 
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div id="div1"> 
</div> 
</form> 
<p><input id="Button1" type="button" value="button" onclick="RequestWebService();" /></p> 
<script type="text/javascript"> 
var sUsrAgent = navigator.userAgent; 
var isIE = sUsrAgent.indexOf("MSIE") != -1; 
var isIE6 = isIE && sUsrAgent.indexOf("MSIE 6.0") != -1; 
var isIE7 = isIE && sUsrAgent.indexOf("MSIE 7.0") != -1; 
var isFF = sUsrAgent.indexOf("Firefox") != -1; 
var isOP = sUsrAgent.indexOf("Opera") != -1; 
var isSF = sUsrAgent.indexOf("Safari") != -1 && sUsrAgent.indexOf("Chrome") == -1; 
var isCH = sUsrAgent.indexOf("Chrome") != -1; 
var xmlHttp; 
function RequestWebService() { 
//这是我们在第一步中创建的Web服务的地址 
var URL = "http://localhost:3165/WebSite2/Service.asmx"; 
//在这处我们拼接 
var data; 
data = '<?xml version="1.0" encoding="utf-8"?>'; 
data = data + '<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">'; 
data = data + '<soap12:Body>'; 
data = data + '<HelloWorld xmlns="http://tempuri.org/" />'; 
data = data + '</soap12:Body>'; 
data = data + '</soap12:Envelope>'; 
//创建异步对象 
xmlHttp = GetXmlHttpObject(); 
xmlHttp.open("POST", URL, false); 
if (xmlHttp.overrideMimeType) { 
xmlHttp.overrideMimeType('text/xml'); 
} 
xmlHttp.SetRequestHeader("Content-Type", "application/soap+xml"); 
xmlHttp.onreadystatechange = stateChanged; 
xmlHttp.Send(data); 
} 
function stateChanged() { 
if (xmlHttp.readyState == 4) { 
if (xmlHttp.status == 200) { 
alert(xmlHttp.getAllResponseHeaders()); 
alert(xmlHttp.responseText); // 这个有 
//var xmlDoc = xmlHttp.responseXML; // 这个是空的,但下面会让它出来 
var xmlDoc = loadXMLDoc(); 
xmlDoc.setProperty("SelectionNamespaces", 'xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ws="http://tempuri.org/" '); 
// 这面这段是命名空间(包含显示与匿名的两种)处理方法,必须加上! 
var node = xmlDoc.selectSingleNode("/soap:Envelope/soap:Body/ws:HelloWorldResponse/ws:HelloWorldResult"); //这边能有值就OK了,为了它前后消耗了1周时间! 
document.getElementById("div1").innerHTML = node.nodeTypedValue; 
} 
} 
} 
function GetXmlHttpObject() { 
var xmlHttp = null; 
try { 
// Firefox, Opera 8.0+, Safari 
xmlHttp = new XMLHttpRequest(); 
} 
catch (e) { 
// Internet Explorer 
try { 
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
} 
catch (e) { 
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
} 
return xmlHttp; 
} 
function loadXMLDoc() { 
var xmlDoc; 
if (isIE) { 
xmlDoc = getMSXmlParser(); 
xmlDoc.async = false; 
xmlDoc.loadXML(xmlHttp.responseText); //webservice response 需要用loadXML 
//xmlDoc.load(xmlHttp.responseText); // 加载xml文档需要用load 
} 
else { 
xmlDoc = xmlHttp.responseXML; 
if (!xmlDoc) { 
xmlDoc = (new DOMParser()).parseFromString(xmlHttp.responseText, 'text/xml'); 
} 
} 
return xmlDoc; 
} 
function getMSXmlParser() { 
var parser = [ 'Msxml2.DOMDocument.6.0', 
'Msxml2.DOMDocument.5.0', 
'Msxml2.DOMDocument.4.0', 
'Msxml2.DOMDocument.3.0', 
'MSXML2.DOMDocument', 
'Microsoft.XMLDOM']; // the same as MSXML.DOMDocument 
for (var i in parser) { 
try { 
var xParser = new ActiveXObject(parser[i]); 
if (xParser) { 
return xParser; 
} 
} 
catch (e) { } 
} 
return null; 
} 
</script> 
</body> 
</html> 

========后台CS文件========
其实这段没有实质内容
 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
public partial class _Default : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
} 
} 

========WebService代码========
 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Services; 
[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 
// [System.Web.Script.Services.ScriptService] 
public class Service : System.Web.Services.WebService 
{ 
public Service () { 
//如果使用设计的组件,请取消注释以下行 
//InitializeComponent(); 
} 
[WebMethod] 
public string HelloWorld() { 
return "Hello World"; 
} 
} 

========返回的responseText========
 
<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 
<HelloWorldResponse xmlns="http://tempuri.org/"> 
<HelloWorldResult>Hello World</HelloWorldResult> 
</HelloWorldResponse> 
</soap:Body> 
</soap:Envelope> 

结束!

最新网友评论  共有(1)条评论 发布评论 返回顶部
jrhvy 发布于2016-08-23 12:49:05
我的也没有效果
支持(0)  反对(0)  回复

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务