Firefox ext 中的 responseXML 上的 jQuery

发布于 2024-09-30 20:41:31 字数 841 浏览 6 评论 0原文

我试图允许 jQuery 1.4.2 在 responseXML 变量上工作,但它不...我只能让它与显示的实时页面一起工作。 这是我的代码:

var url = myext.baseuri + "/Common/page.asp";
   var httpRequest = myext.createHttpRequest();

   httpRequest.open('GET', url, false);
   httpRequest.send();
   if (httpRequest.status == 200) {

      $h = function(selector,context){ return new jQuery.fn.init(selector,context||httpRequest.responseXML); };

      Firebug.Console.log($h().find("select#id").html());
      Firebug.Console.log($h(httpRequest.responseXML));
      Firebug.Console.log($h(httpRequest.responseXML).html());

   } else {
      Firebug.Console.warn("status "+ httpRequest.status);
   }

我在 Firebug 控制台中看到以下结果:

  • Null
  • jQuery(Document )
  • Null

我不明白在这种情况下应该如何利用 jQuery...为什么第一行返回 Null? 我真的需要一些帮助...

谢谢!

I'm trying to allow jQuery 1.4.2 work on a responseXML variable, but it doesn't... I can only let it work with the live page displayed.
Here's my code:

var url = myext.baseuri + "/Common/page.asp";
   var httpRequest = myext.createHttpRequest();

   httpRequest.open('GET', url, false);
   httpRequest.send();
   if (httpRequest.status == 200) {

      $h = function(selector,context){ return new jQuery.fn.init(selector,context||httpRequest.responseXML); };

      Firebug.Console.log($h().find("select#id").html());
      Firebug.Console.log($h(httpRequest.responseXML));
      Firebug.Console.log($h(httpRequest.responseXML).html());

   } else {
      Firebug.Console.warn("status "+ httpRequest.status);
   }

I see the following results in Firebug console:

  • Null
  • jQuery(Document )
  • Null

I don't understand how I should utilize jQuery in this case... why the first row returns Null?
I really need some help...

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

活泼老夫 2024-10-07 20:41:31

您不应该在 XML 文档上使用 html(),因为它在 jQuery 文档中指定: http://docs.jquery .com/Html

如果您想获取“select#id”元素中包含的文本,您应该尝试

Firebug.Console.log($h("select#id").text());

,因为 text() 函数可以在 XML 文档上使用(参见 jQuery 文档)。

如果你想获取 XML 响应的另一个元素,你可以这样获取:

Firebug.Console.log($h("tagName1 tagName2 tagName3"));

我没有尝试像你尝试使用“#id”那样通过 Id 获取元素,但我认为 jQuery 可能不支持它XML 文档,因为它调用“document.getElementById()”。您可以尝试一下:

Firebug.Console.log($h("select[id='id']"));

使用此方法您不会获得相同的性能,但它可能会起作用!

You shouldn't use html() on XML documents, as it is specified in jQuery documentation : http://docs.jquery.com/Html.

If you want to get the text contained in the "select#id" element, you should try

Firebug.Console.log($h("select#id").text());

as the text() function can be used on XML documents (cf jQuery documentation).

If you want to get another element of your XML response, you can get it like this :

Firebug.Console.log($h("tagName1 tagName2 tagName3"));

I haven't tried to get elements by Id like you tried with "#id", but I think that it may be not supported by jQuery for XML document as it calls "document.getElementById()". You may try instead :

Firebug.Console.log($h("select[id='id']"));

You will not have the same performances with this method, but it may work !

策马西风 2024-10-07 20:41:31

以下是我正在处理的示例:

var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
                             .createInstance(Components.interfaces.nsIXMLHttpRequest);
req.onload = function(){
    var xml = req.responseXML;
    $xml = function(selector){ return new jQuery.fn.init(selector,xml); };
    Firebug.Console.log($xml("schedule[order='1'] item"));
};
req.open("GET", url, true);
req.channel.loadFlags |= Components.interfaces.nsIRequest.LOAD_BYPASS_CACHE;
req.send(null);

Firebug 控制台:[item, item, item, item]

这是我正在处理的 XML 示例:

<?xml version="1.0" encoding="UTF-8"?>
<ratp>
    <schedules>
        <schedule order="1">
            <title><![CDATA[Prochains passages en temps réel]]></title>
            <liste>
                <item order="1">
                    <texte1><![CDATA[Voltaire-Villiers]]></texte1>
                    <texte2><![CDATA[11 mn]]></texte2>
                    <texte3><![CDATA[]]>
                    </texte3>
                </item>
                <item order="2">
                    <texte1><![CDATA[Voltaire-Villiers]]></texte1>
                    <texte2><![CDATA[30 mn]]></texte2>
                    <texte3><![CDATA[]]>
                    </texte3>
                </item>
                <item order="3">
                    <texte1><![CDATA[Place Jean Poulmarch]]></texte1>
                    <texte2><![CDATA[4 mn]]></texte2>
                    <texte3><![CDATA[]]>
                    </texte3>
                </item>
                <item order="4">
                    <texte1><![CDATA[Place Jean Poulmarch]]></texte1>
                    <texte2><![CDATA[24 mn]]></texte2>
                    <texte3><![CDATA[]]>
                    </texte3>
                </item>
            </liste>
        </schedule>
    </schedules>
</ratp>

希望它能有所帮助!

Here is an example of what i am working on :

var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
                             .createInstance(Components.interfaces.nsIXMLHttpRequest);
req.onload = function(){
    var xml = req.responseXML;
    $xml = function(selector){ return new jQuery.fn.init(selector,xml); };
    Firebug.Console.log($xml("schedule[order='1'] item"));
};
req.open("GET", url, true);
req.channel.loadFlags |= Components.interfaces.nsIRequest.LOAD_BYPASS_CACHE;
req.send(null);

And the Firebug Console :[item, item, item, item]

Here is an example of the XML I am working on :

<?xml version="1.0" encoding="UTF-8"?>
<ratp>
    <schedules>
        <schedule order="1">
            <title><![CDATA[Prochains passages en temps réel]]></title>
            <liste>
                <item order="1">
                    <texte1><![CDATA[Voltaire-Villiers]]></texte1>
                    <texte2><![CDATA[11 mn]]></texte2>
                    <texte3><![CDATA[]]>
                    </texte3>
                </item>
                <item order="2">
                    <texte1><![CDATA[Voltaire-Villiers]]></texte1>
                    <texte2><![CDATA[30 mn]]></texte2>
                    <texte3><![CDATA[]]>
                    </texte3>
                </item>
                <item order="3">
                    <texte1><![CDATA[Place Jean Poulmarch]]></texte1>
                    <texte2><![CDATA[4 mn]]></texte2>
                    <texte3><![CDATA[]]>
                    </texte3>
                </item>
                <item order="4">
                    <texte1><![CDATA[Place Jean Poulmarch]]></texte1>
                    <texte2><![CDATA[24 mn]]></texte2>
                    <texte3><![CDATA[]]>
                    </texte3>
                </item>
            </liste>
        </schedule>
    </schedules>
</ratp>

Hope it can help !

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文