0

asp.netにいくつかのテキストボックスを含むフォームがあります。jquery ajaxを使用してそれらの値をサーバーに投稿しようとしていますが、問題があります。テキストボックスの値にjavascriptencodeURIComponentを使用してから投稿していますが、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,
...

これに対する解決策は何ですか?

4

1 に答える 1

3

dataAJAX呼び出しを送信するときに、このパラメーターを使用することをお勧めします。

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エンコードします。これらの値は、URLではなくPOSTペイロードの一部として送信されます。これは、サーバーに正しく到達することを保証する最も安全な方法です。URLパスの一部としてユーザーが入力した値を使用しないことをお勧めします。次の質問を見て、そのルートに行く場合に直面する可能性のある問題を理解してください。

于 2011-11-06T13:18:58.233 に答える