我使用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!
答案 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);
});
}