2011-12-06 117 views
1

我正在做一个混搭作为一个个人项目,我试图使用我发现的web服务。从外部webservice获取XML

的Web服务可以在这里找到:

http://www.html2xml.nl/Services/html2xml/version1/Html2Xml.asmx?op=HtmlString2XmlNode

当我尝试通过AJAX调用它,我总是得到以下信息(在这种情况下使用的是Firefox 7):

Error de lectura XML: no se encuentra elemento Ubicación: moz-nullprincipal:{c46bfb1b-719d-490b-8293-a2eabd2ac15a} Número de línea 1, columna 1:

谷歌翻译版本:

XML read error: no element found Location: moz-nullprincipal {719d-490b-c46bfb1b-8293-a2eabd2ac15a} Number of line 1, column 1:

我试过se veral方式($阿贾克斯,JQuery.get等),我总是崩溃到相同的墙壁......

你可以尝试,例如:http://www.html2xml.nl/Services/html2xml/version1/Html2Xml.asmx/Url2XmlNode?urlAddress=www.google.es

看来,如果你在浏览器中执行它的工作,但我不知道如果问题是跨域问题或XML的输出格式...

有谁知道我该如何解决这个问题? (我看过类似的帖子,没有明确的解决方案)。

使用的代码IM是:

var envelope = 
        { 
        urlAddress: "www.google.es" 
        } 

$.ajax({ 
        url: "http://www.html2xml.nl/Services/html2xml/version1/Html2Xml.asmx/Url2XmlNode", 
        dataType: 'xml', 
        data : envelope, 
        dataFilter: function (data, type) { 
        alert(data); 
        alert(type); 
        } 
        }); 

谢谢!

+0

你可以添加你的jQuery代码吗? – ManseUK

回答

1

您使用的webservice没有从google的页面返回有效的xml。如果你查看源谷歌的网页上,标签后不久,你会看到这样的标签:

<textarea id=csi style=display:none></textarea> 

如果你在同一个地方的来源从WebService看它的空节点转换成一个自闭的标签,但在它之后留下一个悬挂的CDATA标签。

<textarea id="csi" style="display:none" /><![CDATA[]]> 

如果您dataFilter功能被解雇,你可以做一个替代(“<![CDATA[]]>”,‘’)的反应,但我认为你的错误之前发生的事情。在这种情况下,将dataType更改为“text”,并且dataFilter函数删除空的CDATA并将文本字符串转换为xml对象以返回。可能需要一点时间才能使其运行起来,并且我还看到了一些关于转换器的信息,如果您遇到问题,可能需要查看这些转换器。