Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尽管responsetext是有效的.net webservice,但响应xml为null_Javascript_Ajax_Asp.net Web Api - Fatal编程技术网

Javascript 尽管responsetext是有效的.net webservice,但响应xml为null

Javascript 尽管responsetext是有效的.net webservice,但响应xml为null,javascript,ajax,asp.net-web-api,Javascript,Ajax,Asp.net Web Api,我有一个用.NET编写的小Web服务,如下所示- [WebMethod] public XmlDocument GetInfo(string key) { //do stuff string final = "<finalURL>" +"sample"+"</finalURL>"; XmlDocument doc = new XmlDocument(); doc.LoadXml(final);

我有一个用.NET编写的小Web服务,如下所示-

[WebMethod]  
public XmlDocument GetInfo(string key)  
{  
       //do stuff  
       string final = "<finalURL>" +"sample"+"</finalURL>";  
       XmlDocument doc = new XmlDocument();  
       doc.LoadXml(final);  
       return doc;    
}  
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();
responseText很好,但responseXML始终为空。我已经发送了内容类型,并且通过验证浏览器是否能够读取webservice响应来检查是否返回了有效的xml

这是来自IE9的xmlhttpRequest对象本身(它在ResponseBy中有一些非unicode字符)——

xmlhttp
[对象XMLHttpRequest]{
ontimeout:null,
答复正文:㼼浸敶獲潩㵮ㄢ〮•湥潣楤杮∽瑵ⵦ∸㸿਍昼湩污剕㹌慳灭敬⼼楦慮啬䱒>,
超时: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=,
重新编制日期:4,
responseText:“样本”,
响应XML:,
现状:200,
状态文本:“确定”
...
} 
我做错了什么?非常感谢您的帮助

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;
string final=“+”+”示例“+”+”;
XmlDocument doc=新的XmlDocument();
doc.LoadXml(最终版本);
xmldecl;
xmldecl=doc.CreateXmlDeclaration(“1.0”,“UTF-16”,null);
XmlElement根=doc.DocumentElement;
doc.InsertBefore(xmldecl,root);
退货单;

哇!终于明白了。
由于某些原因,仅访问responseXML会导致错误。
但是在访问XML中实际需要的元素时,没有出现错误,我能够访问该元素。
以下内容将有助于更好地说明我所做的。
我稍微更改了webservice端的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;
}
成功了!-

您是否尝试过将编码更改为utf-16?@user1846192-感谢您的回复。我将尝试这样做。我修改了我的Web服务以使用utf-16编码返回,但responseText仍然使用utf-8编码。
[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;
}
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();