【问题标题】:Update link text with content from XML document使用 XML 文档中的内容更新链接文本
【发布时间】:2012-03-21 10:58:52
【问题描述】:

对于每个链接,例如

<a href="http://www.wowhead.com/item=78363">http://www.wowhead.com/item=78363</a>

我想在href 属性中检索 URL 末尾的 ID。例如,78363,如上所示。使用此 ID,我想检索一个 XML 页面并根据 ID 从中获取数据。 XML 文档的 URL 与项目的链接相同,但以 &amp;xml 结尾,所以:

http://www.wowhead.com/item=78363&xml

从 XML 页面我需要下面看到的 CDATA 部分中的值:

<name>
<![CDATA[Vagaries of Time]]>
</name>

也就是《时间的变幻莫测》。然后我需要在标签内插入名称:

<a href="http://www.wowhead.com/item=78363">Vagaries of Time</a>

我怎样才能做到这一点?

【问题讨论】:

  • 啊!我的眼睛!请保持格式为标准级别,谢谢。
  • 对不起,我的英文不好,还是谢谢你的编辑。
  • 或者其他什么想法?也许在xml页面和脚本之间粘贴一个带有代码的php文件,然后会根据脚本的请求获取数据? /get_xml.php?id=78363?等

标签: javascript jquery xml ajax


【解决方案1】:

根据正则表达式循环链接,发送 Ajax 请求,使用正则表达式解析文本,然后完成。

$('a').each(function() {
    var $this = $(this);

    if(/item=\d+$/.test(this.href)) {
        $.ajax({
            url: this.href + '&xml',
            dataType: 'text',
            success: function(data) {
                $this.text(/<!\[CDATA\[([^\]]+)/.exec(data)[1]);
            }
        });
    }
});

当然,您很可能希望添加一些错误检查。此外,如果您的 XML 文档比您发布的示例更复杂,请考虑使用本机 XML 功能进行解析 - 为了简单起见,我只是使用了正则表达式。

【讨论】:

  • XML 页面已上线:wowhead.com/item=78363&xml(我们从中获取数据的网站不是我的)。
  • 在这个 XML 页面上有更多选项 CDATA :-/
  • @Edoras:好的,你需要用你自己的服务器代理页面;跨域策略不允许您直接通过 Ajax 向它发送请求。至于另一个CDATA,你需要的是第一个,所以没问题。
  • 哦,如果我明白了——当 XML 不是我的页面,而且我不知道代理服务器,所以它不起作用? :(
猜你喜欢
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
  • 2013-05-01
  • 2010-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多