декодирование URL в asp.net

У меня есть форма в asp.net с несколькими текстовыми полями. Я пытаюсь отправить значения в них на сервер с помощью jquery ajax, но возникают проблемы. Я использую javascript encodeURIComponent для значений текстовых полей, а затем публикую, но вижу, что URL-адрес кодируется автоматически:

wanted result:
mylefturl/first%20name/last%20name

this is what's actually happenning:
mylefturl/first name/last name

и поэтому я получаю ошибку asp.net...

мой код javascript:

var firstName = $("#SignupFirstName").val();
            var lastName = $("#SignupLastName").val();
            var email = $("#SignupEmail").val();
            var password = $("#SignupPassword").val();

            var url = '/Ajax/GetSignup/' + encodeURIComponent(firstName) + '/' + encodeURIComponent(lastName) + '/' + encodeURIComponent(email) + '/' + encodeURIComponent(password);
$.ajax({
                    url: u,
...

Каково решение этого?


person user560498    schedule 05.11.2011    source источник
comment
Все кажется в порядке. Вот пример. Может быть другая ошибка. Можете ли вы опубликовать больше вашего кода?   -  person Emre Erkan    schedule 06.11.2011
comment
проблема на самом деле возникает, когда я пытаюсь вызвать закодированный URL-адрес в asp.net, и поэтому кажется, что он автоматически декодирует его, превращая его в приведенный выше пример: mylefturl/first[space]name/last[space]name, делает У asp.net есть механизм декодирования URL-адресов?   -  person user560498    schedule 06.11.2011


Ответы (1)


Я бы рекомендовал вам использовать параметр data при отправке вызова AJAX:

var firstName = $("#SignupFirstName").val(),
    lastName = $("#SignupLastName").val(),
    email = $("#SignupEmail").val(),
    password = $("#SignupPassword").val();

$.ajax({
    url: '/Ajax/GetSignup/',
    type: 'POST',
    data: { 
        firstName: firstName, 
        lastName: lastName, 
        email: email, 
        password: password 
    },
    success: function(result) {
        // TODO: process the results from the AJAX call
    }
});

Теперь jQuery позаботится о правильном кодировании URL-адресов значений, отправляемых на сервер. Эти значения будут отправлены как часть полезной нагрузки POST вместо URL-адреса. Это самый безопасный способ убедиться, что они правильно попадают на сервер. Я бы порекомендовал вам избегать использования введенных пользователем значений как части вашего URL-адреса. Взгляните на следующее вопрос, чтобы понять, с какими трудностями вы можете столкнуться, если когда-нибудь пойдете по этому пути.

person Darin Dimitrov    schedule 06.11.2011