#javascript #php #mysql #forms
#javascript #php #mysql #формы
Вопрос:
Я следил за проектом codepen для создания анимированной формы. Могу ли я узнать, как я могу сохранить ответ в своей базе данных SQL? Ответы хранятся в questions
массиве с ключом answer
, но я не уверен, как их извлечь. Спасибо!
var questions = [
{question:"What's your first name?"},
{question:"What's your last name?"},
{question:"What's your email?", pattern: /^[^s@] @[^s@] .[^s@] $/},
{question:"Create your password", type: "password"}
]
var onComplete = function() {
var h1 = document.createElement('h1')
h1.appendChild(document.createTextNode('Thanks ' questions[0].answer ' for checking this pen out!'))
setTimeout(function() {
register.parentElement.appendChild(h1)
setTimeout(function() { h1.style.opacity = 1 }, 50)
}, 1000)
}
;(function(questions, onComplete) {
var tTime = 100 // transition transform time from #register in ms
var wTime = 200 // transition width time from #register in ms
var eTime = 1000 // transition width time from inputLabel in ms
if (questions.length == 0) return
var position = 0
putQuestion()
forwardButton.addEventListener('click', validate)
inputField.addEventListener('keyup', function(e) {
transform(0, 0) // ie hack to redraw
if (e.keyCode == 13) validate()
})
previousButton.addEventListener('click', function(e) {
if (position === 0) return
position -= 1
hideCurrent(putQuestion)
})
function putQuestion() {
inputLabel.innerHTML = questions[position].question
inputField.type = questions[position].type || 'text'
inputField.value = questions[position].answer || ''
inputField.focus()
progress.style.width = position * 100 / questions.length '%'
previousButton.className = position ? 'ion-android-arrow-back' : 'ion-person'
showCurrent()
}
}(questions, onComplete))
Комментарии:
1. Если вы сохраняете свои ответы так же, как ваши вопросы. Попробуйте использовать forEach . функциональность для Ajax их с помощью Jquery. Expression из w3schools следует var txt = «»; var numbers = [45, 4, 9, 16, 25]; числа.forEach(myFunction); функция myFunction(значение, индекс, массив) { txt = txt значение «<br>»; } Обратите внимание, что функция принимает3 аргумента: Значение элемента Элемент индексирует сам массив
2. Как и в примере выше, попробуйте отправить ajax for на ваш серверный скрипт для каждой записи в массиве
3. Похоже, что этот комментарий может быть ответом Undry. Вы должны просто опубликовать это и получить кредит!
4. Спасибо @Undry. Я пытаюсь это выяснить, но я только начал изучать javascript, поэтому не совсем понимаю, как реализовать ваш ответ. Если вы не возражаете, можно ли опубликовать код для справки? Большое спасибо и извините за любые неудобства.
Ответ №1:
Для того, чтобы это работало, вам нужна поддержка jquery для вашего веб-сайта
Попробуйте выполнить следующее:
- Предположим, что вы храните свои переменные в массиве JS, например
var numbers = [45, 4, 9, 16, 25];
- Вы можете попробовать использовать встроенную функцию JS для циклического перебора массива, например:
numbers.forEach(myFunction);
- Вы определяете свою функцию, которую используете в пункте 2, с помощью ajax, что-то вроде
myFunction(value){
// answers is used to indicate to your server side script type of operation to be performed to be use in isset(), as value is too general`
var datastring = 'answers' 'amp;value=' value;
// in URL indicate path to your actual server side script that will put records in database
ajax({
type: "POST",
url: "/app/server.php",
data: datastring,
success: function (html) {
console.log(html);
}
}); //End of Ajax
return false;
}
Комментарии:
1. Не знаю, почему формат не так хорош, пробовал несколько раз