【问题标题】:how to escape single quote in odata filter uri?如何在 odata 过滤器 uri 中转义单引号?
【发布时间】:2020-06-16 14:14:57
【问题描述】:

我在 JS 中以这种方式准备查询时尝试转义单引号:

_value.replace(/'/g,'%27')

这样:

_value.replace(/\'/g,'\\\'');

这两个似乎都不起作用

您可以在此处查看示例: http://services.odata.org/V3/Northwind/Northwind.svc/Orders?$select=Freight,CustomerID&$filter=ShipName+eq+'B's%20Beverages'&$format=json

有人知道如何转义单引号吗?

谢谢

【问题讨论】:

    标签: javascript escaping odata quote


    【解决方案1】:

    单引号需要加倍,例如:

    ShipName+eq+'B''sBeverages'
    

    而不是

    ShipName+eq+'B'sBeverages'
    

    【讨论】:

    • 谢谢!帮帮我,你是怎么发现的?我在 odata 文档中的任何地方都找不到它。
    • 我不完全记得在哪里,我猜是一些谷歌搜索和反复试验。在这里,我找到了在发送到服务器msdn.microsoft.com/en-us/library/aa226544(SQL.80).aspx 之前必须转义的字符列表。但是,为每种特殊情况手动创建 URI 会非常繁琐,因此我在这里创建了一个库来处理它gist.github.com/mohamed-ali/6944876,并且我愿意接受有关如何改进/扩展它的建议。
    【解决方案2】:

    使用此代码替换单引号......它的工作......

    _value.replace(/'/g, '%27%27')
    

    【讨论】:

      【解决方案3】:

      根据http://docs.oasis-open.org/odata/odata/v4.01/cs01/part2-url-conventions/odata-v4.01-cs01-part2-url-conventions.html#sec_URLComponents 的示例 3

      您需要用引号转义引号(另外,不要忘记处理 & : 编码为 %26 )

      所以“bit's & bobs”变成了“bit's %26 bobs”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-19
        • 2018-02-17
        • 2023-04-02
        • 2022-01-10
        相关资源
        最近更新 更多