2011-11-05 18 views
0

私はいくつかのテキストボックスを持つasp.netのフォームを持っています。 jquery ajaxを使用してサーバーに値を投稿しようとしていますが、問題があります。私は、テキストボックスの値のためのJavaScriptのencodeURIComponentでを使用して、投稿が、私は、URLが自動的にエンコードされていることを確認しています:asp.netの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, 
... 

この解決策は何ですか?

+0

すべてうまく見えます。 [Here](http://jsfiddle.net/LDuza/)がその一例です。別のエラーが発生している可能性があります。もっとコードを投稿できますか? –

+0

asp.netでエンコードされたURLを呼び出そうとすると実際に問題が発生し、自動的にデコードして上記の例になります。mylefturl/first [space] name/last [space] name、 asp.netにはURLのデコードメカニズムがありますか? – user560498

答えて

3

私は、AJAX呼び出しを送信するときに、あなたがdataパラメータを使用することをお勧めします:

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パスの一部としてユーザーが入力した値を使用することを避けることをお勧めします。 following questionを見て、その道を行くなら直面する可能性のある困難を理解してください。

関連する問題