Я создаю настраиваемую веб-страницу, которая содержит список флажков, позволяющих пользователю выбрать язык (языки) для перевода текста. Проблема, с которой я столкнулся, заключается в том, как я могу сохранить язык (и), выбранный пользователем, и передать его в качестве входных данных в моем запросе приложения логики Azure?
Как с помощью HTML и JavaScript сохранить выбор пользователя и передать эти значения в качестве входного параметра?
Ответы (1)
Это может зависеть от ваших потребностей. Однако простой способ сделать это - использовать ресурсы HTML по умолчанию и использовать как можно меньше JavaScript:
HTML:
<form id="form-id">
<ul>
<li><label><input type="checkbox" name="language" value="english"> English</label></li>
<li><label><input type="checkbox" name="language" value="spanish"> Spanish</label></li>
<li><label><input type="checkbox" name="language" value="vietnamese"> Vietnamese</label></li>
<li><label><input type="checkbox" name="language" value="somali"> Somali</label></li>
<li><label><input type="checkbox" name="language" value="chinese"> Chinese</label></li>
<li><label><input type="checkbox" name="language" value="amharic"> Amharic</label></li>
<li><label><input type="checkbox" name="language" value="korean"> Korean</label></li>
<li><label><input type="checkbox" name="language" value="russian"> Russian</label></li>
<li><label><input type="checkbox" name="language" value="tagalog"> Tagalog</label></li>
<li><label><input type="checkbox" name="language" value="arabic"> Arabic</label></li>
<li><label><input type="checkbox" name="language" value="khmer"> Khmer</label></li>
<li><label><input type="checkbox" name="language" value="thai"> Thai</label></li>
<li><label><input type="checkbox" name="language" value="lao"> Lao</label></li>
<li><label><input type="checkbox" name="language" value="japanese"> Japanese</label></li>
<li><label><input type="checkbox" name="language" value="deutsch"> Deutsch</label></li>
</ul>
<button type="submit">Submit</button>
</form>
Javascript:
const form = document.getElementById('form-id')
form.addEventListener('submit', ev => {
ev.preventDefault()
const formData = new FormData(document.getElementById('form-id'));
const url = 'https://api.videoindexer.ai/location/Accounts/accountId/Videos/videoId/Index'
fetch(url, {
method: 'POST',
body: formData
})
})
Если вы попытаетесь отправить и проверить свою консоль браузера, вы увидите, что он пытается отправить правильно:
Теперь остается только решить эту проблему на стороне сервера.
Кроме того, если вам нужно собрать данные для отправки индивидуальным способом, вы можете использовать эту функцию для этого:
const checkedOptions = []
document.querySelectorAll('input[name="language"]').forEach(item => {
if(item.checked) {
checkedOptions.push(item.value)
}
})
Все выбранные данные будут внутри этого массива, и вы можете использовать такие методы, как .join()
, чтобы объединить их в своем URL-адресе.
РЕДАКТИРОВАТЬ:
Если вам нужно отправить данные с помощью метода GET, вы можете следовать этому в качестве примера:
const form = document.getElementById('form-id')
form.addEventListener('submit', ev => {
ev.preventDefault()
const formData = new FormData(document.getElementById('form-id'));
const languages = new URLSearchParams(formData).toString()
const reTranslate = 'someValue'
const anotherValue = 'anotherValue'
const url = `https://api.videoindexer.ai/location/Accounts/accountId/Videos/videoId/Index?${languages}&reTranslate=${reTranslate}&anotherValue=${anotherValue}`
console.log(url)
// output: https://api.videoindexer.ai/location/Accounts/accountId/Videos/videoId/Index?language=khmer&language=lao&reTranslate=someValue&anotherValue=anotherValue
fetch(url, { method: 'GET '})
})
Но я чувствую, что сначала вам нужно понять пару вещей:
- Разница между POST и GET;
- Как отправлять данные на сервер (используя fetch api, axios, запрос xhr и т. Д.) И обрабатывать ответ от сервера;
- Узнайте, какой контракт API ожидает от вас
Ваше здоровье,
localstorage
илиindexdb
перед отправкой. Кроме того, как указывает @Mahato, вам нужно несколько запросов для каждого языка, выбранного пользователем. - person Abrar Hossain   schedule 16.04.2020