无法从ajax发送包含“#”的参数到dot net web service。
var s = encodeURI(
"http://subdomain.mydomain.domain.asmx/getData?OUserId=" + UserId +
"&Token=" + Token +
"&OrgId=" + OrgId +
'&Message=' + Message +
'&Schoolid=' + SchoolId +
'&SessionId=" ' + SessionId +
'&UnicodeValue=' + UnicodeValue +
'&ClassID=' + ClassIdCommaSeparated.toString()
);
$.ajax({
url: s,
error: function(err) {
alert(err);
},
success: function(data) {....
}
});
此处classIdCommaSeparated为1#1#1#1#1,1#1#1#1#1,1#1#1#1#1
。
答案 0 :(得分:1)
对各个部分使用encodeURIComponent
,而不是encodeURI
整体:
var s = "http://subdomain.mydomain.domain.asmx/getData?OUserId=" + encodeURIComponent(UserId) +
"&Token=" + encodeURIComponent(Token) +
"&OrgId=" + encodeURIComponent(OrgId) +
'&Message=' + encodeURIComponent(Message) +
'&Schoolid=' + encodeURIComponent(SchoolId) +
'&SessionId=" ' + encodeURIComponent(SessionId) +
'&UnicodeValue=' + encodeURIComponent(UnicodeValue) +
'&ClassID=' + encodeURIComponent(ClassIdCommaSeparated.toString());
$.ajax({
url: s,
error: function(err) {
alert(err);
},
success: function(data) {....
}
});
从技术上讲,名称(在=
之前)和值(在=
之后)都需要编码,但是当你的名字只包含字母AZ时(大写或小写) )或数字,就像你的数字一样,对它们进行编码并不会改变它们。 (如果您不知道这些名称是什么,那么您肯定希望通过encodeURIComponent
传递它们。)
答案 1 :(得分:0)
几个小时后,我无法理解是什么引起了这个问题。但我已经解决了这个问题的临时解决方案。我使用了下划线代替#并且我得到了它的工作。谢谢@ T.J。克劳德看了看。