当我有一个部分名称时,getelementsbyname(在Ajax html响应中)。

时间:2011-06-24 11:00:24

标签: javascript jquery ajax html-parsing

我陷入了jQuery宇宙的角落,可以肯定会使用一些帮助。

简而言之,我使用jQuery(GET)进行Ajax调用,并将XHTML页面作为响应。在响应中(其中包括<html><head><body>标记),有一个输入元素,我只知道该名称的一部分。我需要得到这个隐藏输入字段的值,它随响应一起出现。

P.S。我无法控制html响应的样子,所以我无法重新格式化。 这些文件需要位于包含jQuery.js(今天最新版本)

的文件夹中

这是我到目前为止所提出的。

Page1.html(进行Ajax调用并获取page2.html作为回应)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
        <title>runthis</title>

        <script type="text/javascript" language="javascript" src="jQuery.js"></script>

        <script tyle="text/javascript">
        $(document).ready(function(){
                $('input').click(function(){
                        $.ajax({
                                type : "GET",
                                url : 'page2.html',
                                dataType : "html",
                                success: function(data) {
                                    alert($(data).filter('input[name*="test"]').value);
                                },
                                error : function() {
                                        alert("Sorry, The requested property could not be found.");
                                }
                        });
                });
        });
        </script

</head>
<body>
        <input type="button" value="load" />
</body>
</html>

Page2.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
        <title>TiTlE</title>

</head>
<body>
        <input type="hidden" name="1-test" value="123" />
        <input type="hidden" name="some-other-name" value="456" />
        <input type="hidden" name="yet-another-name="789" />
</body>
</html>

所以在这些例子中,我需要得到“123”作为答案。

如果有人能够指出我的错误并帮助我实现这一目标,我将不胜感激。我花了好几个小时浏览网络,我的所有Google搜索结果都标记为已显示:)但仍然无法让它工作。

2 个答案:

答案 0 :(得分:0)

filter()返回一个jQuery对象,而不是DOM元素,因此您必须使用val()方法而不是value属性:

alert($(data).filter('input[name*="test"]').val());

答案 1 :(得分:0)

我刚刚复制了你的设置,发现了你需要解决的两个问题才能让它发挥作用。

两者都在这一行:

alert($(data).filter('input[name*="test"]').value);

首先它应该结束.val()

其次,您要求的是子集的值。选择第一个匹配并返回该值:

alert($(data).first('input[name*="test"]').val())