JavaScript 对 Microsoft Dynamics CRM 的 Get 请求进行编码导致语法错误

JavaScript Encoding Get Request to Microsoft Dynamics CRM causing syntax error

我需要在我们的 CRM 应用程序中检索扇区名称的相应 ID。

我正在通过 JavaScript 中的获取请求使用 CRM API。我尝试过使用 encodeURI、encodeURIComponent 和转义。 get 请求适用于某些扇区名称,但其他扇区名称不起作用,并且 return 出错。

//The url was masked but the query is the same.
let URL = "http://domain/instance/api/data/v8.2/new_occurrencereportsectors?$select=new_occurrencereportsectorid,new_name&$filter=new_name eq ";

//This part works
let encodedURI = encodeURI(URL);

//This is the string I am trying to pass to the CRM API. This does not work.
let query = "Ontario - Outside the Greenbelt / Ontario - à l'extérieur de la ceinture";

//This is me trying out all the enocdings.
let encodedQuery = encodeURI(query);
encodedQuery = encodeURIComponent(encodedQuery);
encodedQuery = escape(encodedQuery);

//This is the string which I am using for the get request.
let finalString = encodedURI + encodedQuery;

//Note this is an example so I am just putting the printed.
//URL into the search bar in the browser.
console.log(finalString);

我希望 return 值是一个格式为 {XXXXXXXX} 的 ID。

输出是语法错误。请参阅下面的错误消息。我遗漏了内部错误,因为它很长而且我没有看到它告诉任何东西/

 "error":{
    "code":"","message":"Syntax error: character '%' is not valid at position 19 in 'new_name eq Ontario%2520-%2520Outside%2520the%2520Greenbelt%2520%2F%2520Ontario%2520-%2520%25C3%25A0%2520l'ext%25C3%25A9rieur%2520de%2520la%2520ceinture'."

所以我想通了我的问题。 Dynamics CRM 不喜欢单引号。函数 escape 和 encodeURI 不对单引号进行编码。但显然在 Dynamics CRM 365 中,单引号是使用两个单引号编码的。

例如'You're name',将变为'You''re name'。由于参数有空格,所以在外面留下单引号。