我在asp.net中有一个带有几个文本框的表单。我试图使用jquery ajax将值中的值发布到服务器,但是遇到了问题。我正在使用javascript encodeURIComponent作为文本框的值,然后发布,但我看到网址是自动编码的:
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 :(得分: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发送。这是确保它们正确连接到服务器的最安全的方法。我建议您避免使用用户输入的值作为网址路径的一部分。看看following question,了解如果你走这条路可能遇到的困难。