JQuery ajax не работает для определенного параметра входной строки "<?" - PullRequest
0 голосов
/ 24 июня 2018

Я делаю ajax-вызов JQuery со строковым входным параметром, как показано ниже. Но всякий раз, когда значением входного параметра является «<?», вызов ajax завершается неудачей, даже не затрагивая метод контроллера на уровне обслуживания.

Но это работает нормально, для всех входных значений, таких как "<", "?", "<*" И т. Д. Это прерывается только для этого ввода "<code><?".

В методе обслуживания контроллера, если я жестко закодировал значение входного параметра в «<?», это дает мне ожидаемый результат. Только когда я передаю это значение из JQuery AJAX, это ломается.

$.ajax({
                url: '/Profile/ValidateAccountName',
                type: 'GET',
                dataType: 'json',
                async: false,
                data: {
                    accountName: $('#account-name').val()
                },
                cache: false,
                success: function (result) {
                    if (!result) {
                        isValid = false;
                        errMsg = "Account name has invalid characters";
                    }
                },
                error: function (xhr, textStatus, errorThrown) {
                    console.error("Service call failed during ValidateAccountName() execution. ")
                }
            });

Пожалуйста, дайте мне знать, что мне здесь не хватает.

1 Ответ

0 голосов
/ 24 июня 2018

? является специальным символом и является маркером для запуска нового параметра URL. Вам необходимо использовать метод encodeURIComponent для отправки таких специальных символов, как показано ниже,

$.ajax({
                url: '/Profile/ValidateAccountName',
                type: 'GET',
                dataType: 'json',
                async: false,
                data: {
                    accountName: encodeURIComponent($('#account-name').val())
                },
                cache: false,
                success: function (result) {
                    if (!result) {
                        isValid = false;
                        errMsg = "Account name has invalid characters";
                    }
                },
                error: function (xhr, textStatus, errorThrown) {
                    console.error("Service call failed during ValidateAccountName() execution. ")
                }
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...