无法从 ajax 向点网 Web 服务发送包含"#"的参数



不能从ajax发送包含"#"的参数到。net web服务。

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) {....
    }
});

这里classsidcommaseparated是1#1#1#1#1,1#1#1#1#1,1#1#1#1#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) {....
    }
});

从技术上讲,名称(在=之前)和值(在=之后)都需要编码,但是当您的名称仅由字母A-Z(大写或小写)或数字组成时,就像您的名称一样,对它们进行编码根本不会改变它们。(如果您不知道这些名称是什么,您肯定希望通过encodeURIComponent传递它们。)

几个小时后我还是不明白是什么引起了这个问题。但我已经找到了一个解决这个问题的临时办法。我已经使用下划线在#的地方,我得到它的工作。由于@T.J。

最新更新