jquery .html () не работает - PullRequest
       2

jquery .html () не работает

0 голосов
/ 14 февраля 2012

Я использую jquery .html () для динамического добавления некоторых тегов путем вызова URL-адреса REST, но это не работает.

<div style="display: none;" id="tables">
    <form:select id="table" name="table" path="table">      
        <form:option value="">Choose</form:option>
        <div id="tables-select">
        <!-- The available tables for update will be added here -->
        </div>
    </form:select>  
    <script type="text/javascript">
        function getTables(type) {
            $.getJSON('/web/tables/db/' + type,
            {
                ajax : 'true'
            },function(data) {
            html ='';
            var len = data.length;
            for ( var i=0; i<len; i++) {
               html += '<option value="'+data[i]+'" >'+data[i]+'</option>';
            }
            $('#tables-select').html(html);
            });
        }
    </script>
</div>

Я вижу, что вызов REST проходит, но ничего не происходитпроисходит.После отладки и установки точек останова я вижу, что java-скрипт переходит со строки 10 непосредственно в конец функции java-скрипта (строка 20).

Есть идеи, что здесь происходит?У меня есть несколько функций такого же типа на моей странице, и все эти работы ожидают этого.

РЕДАКТИРОВАТЬ:

Вот как я вызываю функцию

<script type="text/javascript">
    $(document).ready(function(){
        $("#type").live('change', function(){
            var type = $(this).val();
            getSites(type);
            getTabless(type);
        });
    });
</script>

1 Ответ

1 голос
/ 14 февраля 2012

В нынешнем виде этот код неверен: для getTables() отсутствует закрывающая скобка.Кроме того, я предполагаю, что у вас где-то есть код, который на самом деле вызывает getTables(), в противном случае этот код ничего не делает, кроме объявления функции.

При отладке вызов $.getJSON действительно будет выполняться быстро,Вся цель AJAX в том, что он асинхронный .Таким образом, отладчик перешагнет вызов $.getJSON без ввода обратного вызова, поскольку обратный вызов вызывается позднее.Если вы поместите точку останова в обратный вызов, то она должна сработать.

Весь этот <DIV> имеет стиль display:none.Если вы где-то не звоните $('#tables').show() или не делаете что-то иное, чтобы сделать его видимым, то результат никогда не будет виден, кроме как в DOM или с помощью инструмента, подобного firebug.

Кроме того, вы не можете поставитьтег <DIV> внутри тега <SELECT>.Либо используйте тег <OPTGROUP> для элемента tables-select, либо замените все содержимое элемента <SELECT>, включая начальную опцию «Выбрать».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...