当我传递IP地址或任何其他具有特殊字符的参数时,ajax方法不起作用。
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: '/MyPage.aspx/MyMethod',
data: '{ name: ' + name + ', Ip:' + ip + '}',
dataType: 'json',
success: function (response) {
alert(response.d);
},
failure: function (response) {
alert(response.d);
}
});
有一种解决方案,可以在base 64中对输入进行编码。还有其他方法吗?
答案 0 :(得分:1)
创建一个对象并将其用于AJAX请求的data
属性中,这将解决您的问题:
var dataObj = {
name: name,
Ip: ip
};
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: '/MyPage.aspx/MyMethod',
data: dataObj,
dataType: 'json',
success: function (response) {
alert(response.d);
},
failure: function (response) {
alert(response.d);
}
});
答案 1 :(得分:1)
正如 CBroe 所说,您不应该手动组装JSON字符串,
由于您的参数可能有一些特殊字符,我建议您不要使用json
发送参数。
您可以删除contentType
并将数据更改为{name:name,Ip:ip}
以直接发送参数
$.ajax({
type: "POST",
//contentType: "application/json; charset=utf-8", //remove it
url: '/MyPage.aspx/MyMethod',
data: {name:name,Ip:ip},
dataType: 'json',
success: function (response) {
alert(response.d);
},
failure: function (response) {
alert(response.d);
}
});