使用包含撇号的值进行 REST 调用
REST Call with values containing apostrophe
我使用 REST 和 ajax 使用以下方法从 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" 带撇号。当我打电话时,我收到一条错误的请求消息。我可以在这里做什么?不幸的是,无法更改文本 "Manager's Bulletins"。我正在考虑使用“$filter=substringof.....”,但它与其他所有东西配合得很好。谢谢!
感谢@Lauri 和@charlietfl 的评论。 @charlietfl 给我的信息特别有用,因为它让我看到了不同的选择,而 encodeURIComponent() 是可行的方法。阅读 MDN 的 encodeURIComponent() and this great link to 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);
});
}
我使用 REST 和 ajax 使用以下方法从 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" 带撇号。当我打电话时,我收到一条错误的请求消息。我可以在这里做什么?不幸的是,无法更改文本 "Manager's Bulletins"。我正在考虑使用“$filter=substringof.....”,但它与其他所有东西配合得很好。谢谢!
感谢@Lauri 和@charlietfl 的评论。 @charlietfl 给我的信息特别有用,因为它让我看到了不同的选择,而 encodeURIComponent() 是可行的方法。阅读 MDN 的 encodeURIComponent() and this great link to 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);
});
}