getelementsbyname (в ответе html Ajax), когда у меня есть частичное имя. - PullRequest
1 голос
/ 24 июня 2011

Я застрял в углах вселенной jQuery и наверняка мог бы использовать некоторую помощь.

Короче говоря, я делаю Ajax-вызов с использованием jQuery (GET) и получаю страницу XHTML в качестве ответа.В ответе (который среди прочего включает теги <html>, <head> и <body>) есть элемент ввода, для которого я знаю только часть имени.Мне нужно получить значение этого скрытого поля ввода, которое приходит вместе с ответом.

ps Я не могу контролировать, как будет выглядеть 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» в качестве ответа.

Iбыл бы очень признателен, если бы кто-то мог указать на мою ошибку и помочь мне заставить это работать.Я часами просматриваю сеть, и все мои результаты поиска в Google помечены как видимые :), но все равно не могу заставить его работать.

Ответы [ 2 ]

0 голосов
/ 24 июня 2011

Я только что скопировал вашу настройку и обнаружил две проблемы, которые нужно решить, чтобы это заработало.

Оба в этой строке:

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

Во-первых, это должно закончиться .val()

Во-вторых, вы запрашиваете значение подмножества. Выберите первое совпадение и верните значение для этого:

alert($(data).first('input[name*="test"]').val())
0 голосов
/ 24 июня 2011

filter () возвращает объект jQuery, а не элемент DOM, поэтому вместо свойства value необходимо использовать метод val () :

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