Загрузить систему.Результат строки в Div (jQuery)

#jquery #asp.net-mvc

#jquery #asp.net-mvc

Вопрос:

Насколько я понимаю, $.load в jQuery вводит HTML в элемент (например, div). Однако то, что я хочу сделать, это отправить строку в div через действие контроллера MVC.

 Public Function Stream() As String
    Dim streamPath As String = ConfigurationManager.AppSettings.Item("LiveStreamPath")
    Dim dataStream As String = System.IO.File.ReadAllText(streamPath)

    dataStream = dataStream.Replace(vbNewLine, "<br/>")

    Return dataStream
End Function
 

Это находится внутри HomeController и Global.asax имеет URL-адрес, сопоставленный с /Home/Stream, и действительно, переход к этому местоположению вручную показывает страницу с текстом, расположенным в LiveStreamPath . Однако я хочу использовать другое представление для просмотра этой информации в div.

jQuery:

 <script type="text/javascript">
    $(document).ready(function () {
        $('#testmonitor').load('Home/Stream');
    });
</script>
 

Само представление не представляет собой ничего особенного, просто <div id="testmonitor"></div> .

Я совершенно уверен, что проблема заключается в моем jQuery. Как я могу заставить скрипт загружать результат в строку testmonitor ?

РЕДАКТИРОВАТЬ: URL-адрес представления отображается как ~/Home/MonitorTests?Длина = 4. Быстрый поиск в Google показал, что добавляемое свойство Length означает, что строка фактически передается в представление.

Комментарии:

1. Если домашний / поток контроллера зависит от представления, не следует ли вместо этого загружать представление в контроллер? Теперь кажется, что вы загружаете содержимое Home / Stream в несуществующий элемент 🙂

2. На самом деле ничего не происходит. Кроме того, в чем дыра? Я не знаком с написанием кода, который предотвращает использование XSS.

3. @MarcoJohannesen Файл в LiveStreamPath на самом деле постоянно меняется. Я хочу иметь возможность отображать изменения в реальном времени для пользователя с помощью функции таймера (которую я буду реализовывать, как только div сможет сначала отобразить текст), поэтому я использую jQuery, а не прямую загрузку файла в мое представление.

Ответ №1:

Вы используете относительный путь, который не будет работать, если вы не находитесь в корне.

Измените его на .load('/Home/Stream') .

Комментарии:

1. Это не решило проблему. Я подозреваю, что это больше связано с тем, что на самом деле возвращает контроллер.