响应XML为空,尽管responsetext是有效的.net webservice
response xml is null although responsetext is valid .net webservice
我有一个用。net编写的小web服务,如下-
[WebMethod]
public XmlDocument GetInfo(string key)
{
//do stuff
string final = "<finalURL>" +"sample"+"</finalURL>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(final);
return doc;
}
浏览器中的web服务响应https://i.stack.imgur.com/yBryl.png
我在一个简单的Javascript中使用这个web服务,像这样-
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
alert("REsponse Text = " + xmlhttp.responseText); //this is fine
//alert(xmlhttp.responseXML); // does not even open the alert box, is null
}
};
xmlhttp.open("GET","http://localhost:64400/WebService.asmx/GetInfo?key="+str,true);
xmlhttp.setRequestHeader("Content-Type", "text/xml");
xmlhttp.send();
responseText是好的,但是responseXML总是空的。我已经发送了内容类型,并且还通过验证我的浏览器能够读取webservice响应来检查返回的是有效的xml。
https://i.stack.imgur.com/3rg4J.png这是来自IE9的xmlhttpRequest对象本身(它在responseBody中有一些非unicode字符)-
xmlhttp
[object XMLHttpRequest] {
ontimeout : null,
responseBody : 㼼浸敶獲潩㵮ㄢ〮•湥潣楤杮∽瑵ⵦ∸㸿昼湩污剕㹌慳灭敬⼼楦慮啬䱒>,
timeout : 0,
onload : null,
onreadystatechange : function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { alert("REsponse Text = " + xmlhttp.responseText); parser = new DOMParser(); xmlDoc = parser.parseFromString(xmlhttp.responseText, "text/xml"); alert(xmlDoc); path =,
readyState : 4,
responseText : "<?xml version="1.0" encoding="utf-8"?> <finalURL>sample</finalURL>",
responseXML : ,
status : 200,
statusText : "OK"
...
}
我做错了什么?非常感谢任何帮助。
Webservice修改为使用UTF-16 -
string final = "<root>"+"<finalURL>" + "sample" + "</finalURL>" + "</root>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(final);
XmlDeclaration xmldecl;
xmldecl = doc.CreateXmlDeclaration("1.0", "UTF-16", null);
XmlElement root = doc.DocumentElement;
doc.InsertBefore(xmldecl, root);
return doc;
哎呀!终于想通了。
由于某些原因,仅仅访问responseXML就会导致错误。
但是在访问XML中实际需要的元素时,没有出现错误,并且我能够访问该元素。
以下将有助于更好地说明我所做的。
我稍微改变了一下web服务端的XML,以包含我正在寻找的字符串作为值属性-
[WebMethod]
public XmlDocument GetInfo(string key)
{
//do stuff
string final = "<root>"+"<finalURL value='"" + "sample" + "'"></finalURL>" + "</root>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(final);
return doc;
}
我在javascript中访问了XML的value属性,如下所示-
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
alert("REsponse Text = " + xmlhttp.responseText
+ "'n---------------'n"
+ "ResponseXML value = "+xmlhttp.responseXML.getElementsByTagName("finalURL")[0].getAttribute("value"));
}
};
xmlhttp.open("GET","http://localhost:64400/WebService.asmx/GetInfo?key="+str,true);
xmlhttp.setRequestHeader("Content-Type", "text/xml");
xmlhttp.send();
并且成功了!——
https://i.stack.imgur.com/u5ySS.png
相关文章:
- 借助asp.net验证或java脚本对多个文本进行验证
- java.net和javascript之间正则表达式的差异
- 将Javascript数组发送到控制器ASP.NET MVC
- ASP.NET通过单击JavaScript按钮触发c#事件
- 将数据从javascript文件导入VB.Net页面
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- 如何有效地将游戏数据存储在URL查询字符串中
- 从javascript调用asp.net codebehind函数
- 如何使用Node.js最有效地解析网页
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- 什么'是在asp.net MVC中将本地化的resources.resx文件转换为javascript文件的有效
- $http-get方法即使使用AngularJS中.Net WebApi的有效json也会失败
- 在ASP.NET中使用JQuery UI自动完成的有效方法
- 使用具有有效 JavaScript 格式的 Json.NET 序列化对象
- ASP.NET jQuery ajax 仅在调试浏览器时有效
- 估计:有效学习.net/javascript需要多长时间
- javascripters:CodeMirror.net是显示大型不可编辑代码片段的有效选择吗
- 响应XML为空,尽管responsetext是有效的.net webservice
- 在仍然使用Model的情况下发布两种数据.在ASP中有效.NET Core 1.0
- 对具有有效XML响应的.net web api方法的ajax调用的responseXML未定义