ajax и переменная
Код раньше работал отлично но потом я решил в ajax добавить "&mestor=" + mestor,
и все перестало работать и не могу понять почему. Подскажите пожалуйста
var btn = document.querySelectorAll("a");
for (var i=0;i<btn.length;i++){
btn[i].addEventListener("click", function() {
var mesta = this.getAttribute('data');
var mestor = 0;
switch (mesta) {
case "1":
var mestor = "Шапка сайта";
break;
default:
var mestor = "Не знаю";
}
})
}
$("#contactForm").validator().on("submit", function (event) {
if (event.isDefaultPrevented()) {
// handle the invalid form...
formError();
submitMSG(false, "Пожалуйста заполните все поля");
} else {
// everything looks good!
event.preventDefault();
submitForm();
}
});
function submitForm(){
// Initiate Variables With Form Content
var name = $("#name").val();
var email = $("#email").val();
var phone = $("#phone").val();
$.ajax({
type: "POST",
url: "php/form-process.php",
data: "name=" + name + "&email=" + email + "&phone=" + phone + "&mestor=" + mestor,
success : function(text){
if (text == "success"){
formSuccess();
} else {
formError();
submitMSG(false,text);
}
}
});
}
function formSuccess(){
$("#contactForm")[0].reset();
submitMSG(true, "Ваша заявка отправлена ! С вами свяжется наш менеджер")
}
function formError(){
$("#contactForm").removeClass().addClass('shake animated').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){
$(this).removeClass();
});
}
function submitMSG(valid, msg){
if(valid){
var msgClasses = "h3 text-center tada animated text-success";
} else {
var msgClasses = "h3 text-center text-danger";
}
$("#msgSubmit").removeClass().addClass(msgClasses).text(msg);
}
|
-=Женька=-,
откуда возникнет mestor в строке 36? |
рони,
switch (mesta) { и 8 строка |
-=Женька=-,
она в клике и останется строка 3 |
рони,
Я не на столько хорош в js ) поставил перед ajax mestor = 1; и все заработало но передало 1 : ) Соответственно как я понимаю переменная попадает в функцию пустой. |
-=Женька=-,
var btn = document.querySelectorAll("a");
var mestor = 0;
for (var i=0;i<btn.length;i++){
btn[i].addEventListener("click", function() {
var mesta = this.getAttribute('data');
switch (mesta) {
case "1":
mestor = "Шапка сайта";
break;
default:
mestor = "Не знаю";
}
})
}
|
рони,
Да но с switch теперь ничего не передается в php проблемы нет так когда перед ajax написал mestor = 1; единица передалась без проблем |
рони,
Может проблема в клиентской части еще ? Как работает чудо механизм. На странице есть 5-10 кнопок и все ведут на модальное окно с одной формой и мне нужно знать на какую кнопку нажал пользователь что-бы попасть на форму и заполнить её |
-=Женька=-,
не понимаю что вы хотите сделать, всё что мог выше. |
рони,
https://codepen.io/lomakin/pen/YxeLPp При нажатии всегда открывается одна и та же форма. Мне нужно что-бы при отправки данных с формы еще отправлялась переменная mestor и я видел с какой части сайта начали заполнять форму |
-=Женька=-,
var btn = document.querySelectorAll("a");
var mestor = 0;
for (var i=0;i<btn.length;i++){
btn[i].addEventListener("click", function(event) {
event.preventDefault();
var mesta = this.getAttribute('data');
switch (mesta) {
case "1":
mestor = "Шапка сайта";
break;
case "2":
mestor = "Под шапкой сайта. 1";
break;
case "3":
mestor = "Под шапкой сайта. 2";
break;
default:
mestor = "Не знаю";
}
})
}
|
рони,
не передается. Но уже все отправляется без ошибок. может отправлять в кэш, а перед отправкой ajax узнать что там лежит ? |
рони,
По идее если даже со свича ничего не передается то должно идти var mestor = 0; |
Цитата:
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css"> .modal{
display: none;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
var btn = document.querySelectorAll("a");
var mestor = 0;
for (var i=0;i<btn.length;i++){
btn[i].addEventListener("click", function(event) {
event.preventDefault();
var mesta = this.getAttribute('data');
switch (mesta) {
case "1":
mestor = "Шапка сайта";
break;
case "2":
mestor = "Под шапкой сайта. 1";
break;
case "3":
mestor = "Под шапкой сайта. 2";
break;
default:
mestor = "Не знаю";
}
$(".modal").show()
})
}
$("#contactForm").on("submit", function (event) {
event.preventDefault();
alert(mestor);
$(".modal").hide();
});
});
</script>
</head>
<body>
<a href="#" class="btn-background" data-toggle="modal" data-target=".modal" data="1">Кнопка ведет на форму</a>
<a href="#" class="btn-background" data-toggle="modal" data-target=".modal" data="2">Кнопка ведет на форму</a>
<a href="#" class="btn-background" data-toggle="modal" data-target=".modal" data="3">Кнопка ведет на форму</a>
<div class="modal">
<!-- Form starts -->
<form id="contactForm" action="" method="POST" >
<fieldset>
<legend>Contact Form</legend>
<table width="100%" border="0">
<tr>
<td width="120"><label for="name">Name</label></td>
<td><input name="name" id="name" size="30" /></td>
</tr>
<tr>
<td width="120"><label for="email">E-mail</label></td>
<td><input name="email" id="email" size="30" /></td>
</tr>
<tr>
<td width="120" valign="top"><label for="comments">Comments</label></td>
<td><textarea name="comments" id="comments" rows="5" cols="40"></textarea></td>
</tr>
<tr>
<td>
</td>
<td>
<input type="submit" name="Submit" value="Submit" />
</td>
</tr>
</table>
</fieldset>
</form>
<!-- Form ends -->
</div>
</body>
</html>
|
рони,
Тогда спасибо ) только не пойму что мешает передаться,а точней дойти до ajax |
рони,
Нашел проблему :) Как всегда все очень глупо. default: var = mestor = "Не знаю"; убрал var = |
-=Женька=-,
ок. |
-=Женька=-,
выбрасывать надо это. Каждая форма может иметь скрытое поле содержащее значение позиции. Источником позиции может служить и кнопка отправления формы. Это наряду с другими полями формы и нужно передавать, но не склеивая руками, а достаточно в обработчике отправления $(this).serialize(). Никаких дополнительных скриптов получающих от ссылок данные совсем не требуется. |
Цитата:
Цитата:
|
рони,
значит надо записывать сразу в элемент формы из data ссылки без switch. А если выбросить ссылки, заменив их на label с дочерними radio, то и этого не требуется. |
laimas,
switch конечно можно убрать, если в дата писать нужную информацию, но какой смысл переносить это в элемент формы, чтоб ещё раз извлечь, когда есть готовая переменная? |
рони,
я не дописал просто все сразу, теперь дописано. Лишнее это совсем. |
laimas,
ок. |
| Часовой пояс GMT +3, время: 02:28. |