2011-11-05 90 views
0

我有一个窗体在asp.net中有几个文本框。我试图将它们中的值发布到使用jquery ajax的服务器上,但遇到问题。我使用JavaScript encodeURIComponent方法对文本框的值,然后张贴的,但我看到网址自动编码:在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是否有一个解码机制的网址? – 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编码发送到服务器的值照顾。这些值将作为POST有效负载的一部分而不是url发送。这是确保他们正确地访问服务器的最安全的方法。我建议你避免使用用户输入的值作为你的url路径的一部分。看看following question,了解如果你走这条路线可能会遇到什么困难。