REST调用包含撇号的值

时间:2015-08-25 20:48:28

标签: javascript ajax rest sharepoint-2013

我使用REST和ajax使用ablve从SharePoint获取数据:

https:xxxxxxxx/_vti_bin/ListData.svc/RMSD_Tasks?$orderby=IssueValue asc,StatusValue desc&$filter="+dropValue+" eq '"+secondFilterVal+"'&groupby=IssueValue/StatusValue

除了一个案例外,一切正常。有时,secondFilterVal的值是“Manager's Bulletins”,带有一个apostyrophe。当我拨打电话时,收到一条错误的请求消息。我能在这做什么?不幸的是,文本“经理的公告”无法更改。我正在考虑使用“$ filter = substringof .....”,但它与其他所有东西都能很好地工作。 Thansk!

1 个答案:

答案 0 :(得分:0)

感谢@Lauri和@charlietfl的评论。 @charlietfl给我的信息特别有用,因为它让我看到了不同的选项,并且encodeURIComponent()是最佳选择。阅读MDN' encodeURIComponent()这个与REST Filters的重要链接帮助我使用上述代码解决了我的问题:

由于一些奇怪的原因,你需要两次撇号:结果Manager%27%27s%20Bulletins完美无缺。

var str = fixedEncodeURIComponent("Manager's Bulletins");

function fixedEncodeURIComponent(src) {
    return encodeURIComponent(src).replace(/[!'()*]/g, function (c) {
        return '%' + c.charCodeAt(0).toString(16) + '%' + c.charCodeAt(0).toString(16);
    });
}