jQuery получение параметра по id в ASP.NET MVC

104
05 сентября 2021, 00:40

Хочу получить текстовое содержимое по id, например получить "6000118":

<p id = "tst">6000118</p>

В методе jQuery:

<script type="text/javascript">
    function getName() {
            $('#searchresult').load('@(Url.Action("nameMatResult", "Edit"))', { asd: Math.random(), code: $('#tst').get(0) },
                function () { setTimeout(getName, 2000) });
    }
    $(document).ready(function () { getName() });
</script>

Описание: Метод работает каждые 2 секунды и вызывает частичное представление с параметром code, которое вставляет в блок searchresult.

Частичное представление в контроллере Edit:

public ActionResult nameMatResult(string code)
    {
        ViewBag.nameMaterial = getNameMaterial(code);
        return PartialView();
    }

При этом всём используется jquery 1.9.1 Но ничего не работает, консоль сообщает:

"Uncaught TypeError: Illegal invocation at add (jquery-3.3.1.js:8463) at buildParams (jquery-3.3.1.js:8450) at buildParams (jquery-3.3.1.js:8444) at buildParams (jquery-3.3.1.js:8444) at buildParams (jquery-3.3.1.js:8444) at Function.jQuery.param (jquery-3.3.1.js:8483) at Function.ajax (jquery-3.3.1.js:9073) at jQuery.fn.init.jQuery.fn.load (jquery-3.3.1.js:9878) at getName (Create?stove=1&date=10%2F07%2F2019 13%3A23%3A07:54) at HTMLDocument. (Create?stove=1&date=10%2F07%2F2019 13%3A23%3A07:57)"

Если убрать чтение id, а именно $('#tst').get(0) и принудительно это заменить текстовым значением в кавычках, то всё работает прекрасно. В этой ситуации выходит, что используется два jquery - 1.9.1, который использую я и 3.3.1, который использует стандартный шаблон MVC, от которого отказываться не хотелось бы. Может быть есть какое-то решение на этот счёт? И не совсем понятно, почему метод в целом работает, а с чтением параметра по id нет?

Answer 1

Так происходит потому что get(0) получает элемент в чистом js из объекта jQuery, а не значение внутри тегов! Используйте метод text() чтобы получить значение либо если Вы уж хотите использовать get(0), то тогда получайте текст из чистого js

console.log($('#tst').get(0)); 
console.log($('#tst').text()); 
console.log($('#tst').get(0).innerText);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<p id = "tst">6000118</p>

READ ALSO
Заполнение двумерного массива вихрем

Заполнение двумерного массива вихрем

Имеется массив n*n, необходимо его заполнить вихрем, те

224
Данные в select&#39;e не отображаются

Данные в select'e не отображаются

Подскажите, делаю запрос к AD и через консоль вижу все данные, но если пытаюсь добавить в select, то пишет ошибка, где я накосячил с кодом? Может...

179
Ошибка - Привязка SOAP 1.1 не найдена

Ошибка - Привязка SOAP 1.1 не найдена

Пытаюсь преобразовать WSDL в классы C# командой wsdl mainwsdl /l:C#, содержимое main

243
Не выводится правильный ответ

Не выводится правильный ответ

Вычислить с точностью E=10-10 значение,где 1/(1+x) ~ 1-x+x2-x3+

66