JavaScript, как передать переменную в URL-запрос с помощью window.open - PullRequest
0 голосов
/ 30 октября 2019

Прежде всего - на этот вопрос нет ответов на Включить переменную в 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-запрос?

Ответы [ 3 ]

2 голосов
/ 30 октября 2019

Похоже, вы просто неправильно помещаете переменную в строку. Проверьте литералы шаблона , если вам не нужна поддержка 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); должно работать

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

Вы должны заключить URL в Шаблонные литералы

window.open(`http://example.com/?q=${myname}`);
1 голос
/ 30 октября 2019

Неверная конкатенация строк

var myname = "test"
window.open("http://example.com/?q=" + myname); // Classic string concatenation
window.open(`http://example.com/?q=${myname}`); // Using template literal 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...