На сайте 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 не может искать ничего, что содержит их. Я изменил способ создания идентификаторов, которые я встраиваю в страницу, чтобы они не включали эти косые черты.