ASP. NET MVC Ajax .ActionLink - jQuery ошибки при поиске элемента по идентификатору при конкатенации идентификатора из переданного значения во время OnComplete - PullRequest
0 голосов
/ 23 января 2020

На сайте MVC, над которым я работаю, я пытался реализовать довольно типичный загрузчик через AJAX, который предназначен для отображения анимации загрузки CSS и затем по завершении асинхронного c call it скрывает загрузочный элемент и удаляет указанный элемент со страницы.

Аспект загрузчика работает нормально, однако у меня возникают проблемы, когда я пытаюсь передать идентификатор через функцию скрытия, которую я создал. Этот переданный идентификатор представляет собой строку, содержащую косую черту (пример «32/23/2324»). Это позволяет мне удалять различные части страницы в зависимости от нажатой кнопки.

Вот функция javascript, которую я использую:

function HideSpinner(appNum) {
    $("#" + appNum).remove();
    $("#loadingSpinner").hide();
    $("#overlay").hide();
}

А вот Пример Ajax .ActionLink, из которого вызывается эта функция:

@Ajax.ActionLink("Unsubscribe", "UnsubscribeSingleAppNum", new { GUID = Model.Sub_GUID, AppNum = appNum }, new AjaxOptions { HttpMethod = "GET", OnBegin = "ShowSpinner()", OnComplete = "HideSpinner(\"" + appNum + "\")" }, new { @class = "btn btn-outline-secondary" })

Просто для справки, вот cs html (я устанавливаю идентификатор элемента tr в значение appNum так что я могу затем удалить его, как только / 1030 * вызов завершится / завершится успешно, по крайней мере, это был план ...):

<tr id="@appNum">
<td>@appNum</td>
    <td>
        @Ajax.ActionLink("Unsubscribe", "UnsubscribeSingleAppNum", new { GUID = Model.Sub_Email, AppNum = appNum }, new AjaxOptions { HttpMethod = "GET", OnBegin = "ShowSpinner()", OnComplete = "HideSpinner(\"" + appNum + "\")" }, new { @class = "btn btn-outline-secondary" })
    </td>
</tr

Метод действия, который это вызывает, в настоящее время не выполняет что угодно - просто спит нить, чтобы я мог проверить, как выглядит загрузчик. Я планирую реализовать вызов службы REST в этой функции, но для справки:

[HttpGet]
public void UnsubscribeSingleAppNum(string GUID, string AppNum)
{
    if(!string.IsNullOrEmpty(GUID) && !string.IsNullOrEmpty(AppNum))
    {
        // Do stuff
        Thread.Sleep(5000);
    }
}

Поработав некоторое время, я не могу понять, что я делаю неправильно , Когда я отлаживаю в инструментах разработчика, я вижу, что значение appNum передается правильно, и что затем оно соединяется с «#» на передней панели для выбора jQuery.

Это что-то делать с косыми чертами, являющимися побегами? Это ошибка, которую jQuery выводит на консоль:

Uncaught Error: Syntax error, unrecognized expression: #02/19/00021
    at Function.Sizzle.error (jquery-3.4.1.js:1560)
    at Sizzle.tokenize (jquery-3.4.1.js:2216)
    at Sizzle.select (jquery-3.4.1.js:2643)
    at Function.Sizzle [as find] (jquery-3.4.1.js:862)
    at jQuery.fn.init.find (jquery-3.4.1.js:2896)
    at new jQuery.fn.init (jquery-3.4.1.js:3006)
    at jQuery (jquery-3.4.1.js:152)
    at HideSpinner (scripts.js:224)
    at Object.eval (eval at c (jquery.unobtrusive-ajax.min.js:1), <anonymous>:3:1)
    at Object.complete (jquery.unobtrusive-ajax.min.js:5)

РЕДАКТИРОВАТЬ: выяснил, что проблема. Оказывается, это косые черты, jQuery не может искать ничего, что содержит их. Я изменил способ создания идентификаторов, которые я встраиваю в страницу, чтобы они не включали эти косые черты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...