document.getElementById приводит к тому, что документ jquery готов к выполнению дважды

0

Этот код должен переходить на load.php и получать некоторые данные в формате xml, анализировать его и загружать в div и отображать его. Он отлично работает, за исключением того, что данные из load.php отображаются дважды. Есть ли другой способ сделать это, что не приведет к тому, что данные будут показаны дважды? Я видел несколько сообщений, связанных с функцией готовности документа, вызывающей эту проблему, но не могу понять, как применять любые решения для этого случая. Я помещаю это в заголовки на моей странице. Я действительно хочу сохранить этот формат, потому что в итоге я отправлю некоторые данные на страницу load.php.

SCRIPT

$(document).ready(function () {
    $.ajax({
        type: 'POST',
        url: 'load.php',
        success: loadReturn
    });

    function loadReturn(data) {
        var xml = $.parseXML(data);
        $xml = $(xml);

        $errorcode = $xml.find('errorcode');
        $data = $xml.find('data');

        document.getElementById("defaultcode").innerHTML = $data.text();
        $("#defaultcode").fadeIn(300);
    }
});

</script>

HTML

<div id="defaultcode" style><h3>a title</h3><p>blah blah</p><h3>a title</h3><p>blah blah</p></div>

Заранее благодарю за ваше время.

  • 0
    Почему вы используете document.getElementById("defaultcode") в одной строке и $("#defaultcode") в следующей?
  • 0
    Я удивлен результатом, учитывая, что есть только один элемент «defaultCode», и innerHTML должен заменить все, что там уже есть - даже если loadReturn был вызван дважды (что не должно быть), data.text () должен только быть там один раз. Можете ли вы вставить HTML код по умолчанию, как это показывает инспектор вашего браузера после инициализации? (щелкните правой кнопкой мыши по тексту, нажмите «Проверить элемент»)
Показать ещё 10 комментариев
Теги:
post

1 ответ

0

Прежде всего, я пытаюсь исправить ваш код в правильном направлении. но я не думаю, что код неправильный. вы должны отправить два тега data из load.php. проверьте свои возвращенные data.

$(document).ready(function () {
    $.ajax({
        type: 'POST',
        url: 'load.php',
        success: loadReturn
    });

    function loadReturn(data) {

        // check your data
        console.log(data);

        // jQuery will parse for you automatically
        var $xml = $(data);

        var $errorcode = $xml.find('errorcode');
        var $data = $xml.find('data');

        // set html before fadeIn
        $("#defaultcode").html($data.text()).fadeIn(300);
    }
});
  • 0
    Спасибо, что показали мне этот $ ("# defaultcode"). Html ($ data.text ()). FadeIn (300); Я понятия не имел, что они могут быть объединены таким образом. :-)
  • 0
    Вы можете сделать это, потому что многие методы jQuery возвращают его самостоятельно. Это называется method chaining

Ещё вопросы

Сообщество Overcoder
Наверх
Меню