如何在 Internet Explorer 不修改字符串的情况下在字符串中使用双引号?

How can I use double quotes in a string without Internet Explorer modifying them?

我正在为来自 Sharepoint 的 api 搜索查询生成一个复杂的字符串。我需要将双引号连接到字符串并使用 \ 字符转义它们。

if ($("#ddlPais option:selected").val() > 0) {
  url+= "RefinableString03: \"" + $("#ddlPais option:selected").text() + "\" ,";
} 

问题是 Internet Explorer 生成带有 \" 的变量中的字符串。 由于我在对 Sharepoint 的 api 搜索的 AJAX 请求中使用了字符串变量,因此查询失败。

如何才能使 Internet Explorer 不更改变量中的“by \”?

PD:这是一个 Internet Explorer 错误。我试过 Chrome 并且转义字符 \" 工作正常并且在变量中只留下双引号。

谢谢。

您使用的是哪个版本的 IE?我在 IE 中 IE 11 version 11.116.18362.0 and the escape character works well. You could check my demo code 进行测试。

另外,不用转义符也可以。使用单引号将变量括起来,然后您可以直接在字符串中使用双引号。您可以检查以下代码作为解决方法:

var url = "";
if ($("#ddlPais option:selected").val() > 0) {
  url += 'RefinableString03: "' + $("#ddlPais option:selected").text() + '" ,';
}
console.log(url);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="ddlPais">
  <option value="1" selected="selected">valueX</option>
  <option value="2">valueY</option>
</select>

我找到了解决问题的方法。为了在调用 ajax 之前解决它,我执行了 encodeURIComponent 函数,该函数对 ajax 请求的整个 url 进行编码,从而避免了导致我使用双引号的问题。我post它以防有人有类似的问题。