Как использовать двойные кавычки в строке, не изменяя их в Internet Explorer? - PullRequest
0 голосов
/ 08 октября 2019

Я генерирую сложную строку для поискового запроса API из Sharepoint. Мне нужно объединить двойные кавычки в строку и использовать символ \, чтобы избежать их.

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

Проблема в том, что Internet Explorer генерирует строку в переменной с \ ". Так как я использую строковую переменнуюв AJAX-запросе к API-интерфейсу поиска Sharepoint запрос завершается неудачей.

Что можно сделать, чтобы Internet Explorer не изменил «by» в переменной?

PD: Этоошибка в Internet Explorer. Я пробовал с Chrome, и escape-символ \ "работает нормально и в переменной остается только двойная кавычка.

Спасибо.

Ответы [ 2 ]

1 голос
/ 15 октября 2019

Я нашел решение своей проблемы. Чтобы решить эту проблему перед вызовом ajax, я выполняю функцию encodeURIComponent, которая кодирует весь URL-адрес запроса ajax и, таким образом, избегает проблем, которые вызывали у меня двойные кавычки. Я выкладываю его на случай, если у кого-то возникнет похожая проблема.

0 голосов
/ 09 октября 2019

Какую версию IE вы используете? Я тестирую в своей IE 11 версии 11.116.18362.0 и escape-символ хорошо работает . Вы можете проверить мой демонстрационный код в IE.

Кроме того, вы можете сделать это без escape-символа. Используя одинарные кавычки, чтобы заключить переменную, вы можете использовать двойные кавычки непосредственно в строке. Вы можете проверить следующий код в качестве обходного пути:

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>
...