jQuery ajax不适用于特定的输入字符串参数“ <!-?”

时间:2018-06-24 04:33:05

标签: javascript jquery ajax

我正在使用以下字符串输入参数进行JQuery ajax调用。但是只要输入参数值为“ <?”,Ajax调用就会失败,甚至不会在服务层中触发控制器方法。

但这对于所有输入值(例如“ <”,“?”,“ <*”等)都可以正常工作。这仅对于此输入“ <?”是无效的。

在控制器维修方法中,如果我将输入参数值硬编码为“ <?”,这将为我提供预期的结果。仅当我从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 :(得分:1)

?是一个特殊字符,并且是用于启动新的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. ")
                }
            });