Вставка файла на HTML-страницу с использованием Javascript?

В настоящее время я пытаюсь прочитать текст из файла и добавить его к элементу на моей html-странице, используя DOM и Javascript. Я не могу отформатировать текст. Я пробовал использовать innerHtml, но вообще не форматируется (без разрывов строк).

Вот javascript:

http = new XMLHttpRequest();
http.open("GET",FILE,false);
http.send();       
document.getElementById("tbody").innerHTML = http.responseText

Как я уже сказал, текст добавляется к элементу tbody, но при этом не форматируется.


Я заставил его работать с этим кодом (с тегом pre), но, как я уже сказал, он работает на моем компьютере, но не на сервере, что не помогает.

           http.open("GET",FILE ,false);
           http.send();
           var newtext = document.createTextNode(http.responseText);
           var para = document.getElementById("tbody");
           para.appendChild(newtext);   

Вот весь мой код javascript:

функция getHTTPObject () { var http = false;

/*@cc_on
    @if (@_jscript_version >= 5)
    try
    {
        http = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
        try
        {
            http = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (E)
        {
            http = false;
        }
    }
    @else
    {
        http = false;
    }
@end @*/

if (!http && typeof XMLHttpRequest != 'undefined')
{
    try
    {
        http = new XMLHttpRequest();
    }
    catch (e)
    {
        http = false;
    }
}
return http

}

    function loadData()
    {

     http = getHTTPObject();

        if (http)
        {
           http.open("GET","my file name",false);
           http.send();
           var newtext = document.createTextNode(http.responseText);
           var para = document.getElementById("tbody");
           para.appendChild(newtext);   
        }
    }

Вам нужно будет рассказать больше подробностей, чтобы люди могли вам помочь. Каково именно содержание ответа? Как выглядит HTML-код, с которого вы начинаете? Каково состояние DOM, когда вы получаете запрос?

rz. 08.12.2008 03:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
771
5

Ответы 5

Возможно, вам повезет, заключив текст в тег <pre>. Что в ответ? Если это XML, вы можете использовать responseXML.

http = new XMLHttpRequest();
http.open("GET",FILE,false);
http.send();       
document.getElementById("tbody").appendChild(http.responseXML);

innerHTML принимает (и анализирует) и строку html, поэтому в результате должно получиться дерево DOM, подобное

(предполагая)

<tbody>{responseText}</tbody>

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

Все зависит от того, какие данные находятся в ответе. Если это обычный текст, нет причин для его форматирования. Если вы хотите, чтобы html «уважал» пробелы, как было предложено выше, поместите текст внутри тега pre.

Если ответ - html, убедитесь, что #tbody - это div или что-то подобное.

Вам также следует изучить возможность использования чего-то вроде jquery для ваших манипуляций с DOM и ajax. Это избавит вас от головной боли благодаря кроссбраузерной совместимости, и его легче писать.

Причина, по которой он работает на вашем ПК, но не на сервере, вероятно, заключается во времени. AJAX асинхронен, но вы относитесь к нему как к синхронному.

Готов поспорить, что ответ связан с вашим утверждением: «Он работает на моем ПК, но не на сервере». Я предполагаю, что у вас проблемы, потому что файл не существует на сервере или путь к файлу другой. Вы проверили, что файл отправлен вашему клиенту, попробовав URL-адрес файла напрямую в браузере?

Другие вопросы по теме