Прежде всего - на этот вопрос нет ответов на Включить переменную в URL или Как я могу выполнить интерполяцию строк в JavaScript? Я тестировал много вариантов из других источников, прежде чем задавать вопрос здесь. Например, как указано в Включить переменную в URL
window.open('http://example.com/?q="+ myname"');
, не работает с приведенным ниже сценарием. Необходима особая упаковка.
Итак, самый простой сценарий
<script type="text/javascript"> function sendquery() { var myname = "John"; alert(myname); window.open('http://example.com/?q=(myname)'); } </script> <button onclick="sendquery()">Query</button>
Alert отлично показывает переменную John. Но запрос отправляет не переменную Джон, а (myname).
Или + myname - если следуют другие ответы.
Как перенести переменную в URL-запрос?
Похоже, вы просто неправильно помещаете переменную в строку. Проверьте литералы шаблона , если вам не нужна поддержка IE.
var myname = "John"; // won't work window.open('http://example.com/?q="+ myname"'); // will produce 'http://example.com/?q=John' window.open(`http://example.com/?q=${myname}`);
, а также
// won't work window.open('http://example.com/?q=(myname)'); // valid window.open(`http://example.com/?q=${myname}`);
Если вам нужна поддержка IEтогда window.open('http://example.com/?q=' + myname); должно работать
window.open('http://example.com/?q=' + myname);
Вы должны заключить URL в Шаблонные литералы
window.open(`http://example.com/?q=${myname}`);
Неверная конкатенация строк
var myname = "test" window.open("http://example.com/?q=" + myname); // Classic string concatenation window.open(`http://example.com/?q=${myname}`); // Using template literal