В настоящее время я пытаюсь прочитать текст из файла и добавить его к элементу на моей 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);
}
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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