Запросить кодировку URL в вызове $ .ajax и максимальную длину URL запроса в $ .ajax по сравнению с Ajax.ActionLink - PullRequest
4 голосов
/ 26 февраля 2010

Я делаю простой запрос $ .ajax:

$.ajax({              
    type: "POST",

    url: "/Run/" + param1 + "/" + param2,

    dataType: 'html',

    error: function(error) {

    },

    success: function(html) {

    }
});

Если мое значение param2 похоже на http://localhost/pub/file?val1=Some Text & val2 = Некоторый текст , тогда кодирование выполняется с использованием escape (param2), encodeURI (param2), encodeURIComponent (param2) не помогает. И я получаю следующее ОШИБКА ->

Ошибка HTTP 400.0 - неверный запрос ASP.NET обнаружил недопустимые символы в URL

Мои вопросы ->

  1. Как мне кодировать param2 ?
  2. Какова максимальная длина URL запроса в вызове $ .ajax?
  3. Зависит ли максимальная длина URL запроса от типа браузера, из которого сделан запрос?
  4. Я заметил, что если я использую Ajax.ActionLink , мне не нужно кодировать параметры, передаваемые в действие, и я также могу передавать параметры длиной> 10000 символов. Но я не знаю, как сделать явный вызов, используя Ajax.ActionLink из моего сценария Java. Мне нужно нажать на эту ссылку для совершения звонка через Ajax.ActionLink .

Преимущества Ajax.actionLink -> Пожалуйста, посмотрите длину параметра categoryName , переданного в действие с использованием Ajax.ActionLink (Это мое наблюдение) alt text

alt text

1 Ответ

3 голосов
/ 26 февраля 2010

Такие большие параметры должны публиковаться, а не отправляться в URL.

$.ajax({              
    type: 'POST',
    url: '/Run',
    data: { param1: param1, param2: param2 },
    dataType: 'html',
    error: function(error) {
    },
    success: function(html) {
    }
});

Это автоматически обрабатывает кодирование параметров. Если вы абсолютно настаиваете на отправке их в URL, вы можете объявить глобальную переменную javascript, которая будет содержать URL для вызова:

<script type="text/javascript">
    var url = '<%= Url.Action("Run"), new { param1 = "value1", param2 = "value2" } %>';
    $(function() {
        $.ajax({              
            type: 'POST',
            url: url,
            dataType: 'html',
            error: function(error) {
            },
            success: function(html) {
            }
        });
    });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...