Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как ПРАВИЛЬНО прописать путь к файлу mail.php в файле mail.js (https://javascript.ru/forum/misc/73368-kak-pravilno-propisat-put-k-fajjlu-mail-php-v-fajjle-mail-js.html)

AlexKarn 10.04.2018 15:05

как ПРАВИЛЬНО прописать путь к файлу mail.php в файле mail.js
 
Добрый день!
Подскажите как ПРАВИЛЬНО прописать путь к файлу mail.php в файле mail.js
Файл перемещен в отдельную папку из папки темы Wordpress, и нужно указать путь к нему в mail.js
Никогда не сталкивался с js, прошу помощи, можно написать на примере любого адреса, дальше я пойму)))

Я так понимаю вот нужная строка:
action = $('[src $= mail\\.js]').attr('src').replace('js', 'php'); // путь к скрипту отправки почты

Ниже весь код. Заранее спасибо!


var selector = 'form', form_ids = [], cur_id = '';
$(selector).each(function(){
cur_id = $(this).attr('id');
if($(this).attr('action') === undefined) {
$(this).attr('action', '/').attr('method', 'post');
if(form_ids.indexOf(cur_id) !== -1){
cur_id = cur_id+form_ids.length;
$(this).attr('id', cur_id);
}
form_ids.push(cur_id);
}});
$(function() {
$(selector + '[action = "/"]').submit(function(e) {

hide = 0; // 1 - прятать форму после отправки (0 - не прятать)
hide_lbox = 0; // 1 - прятать лайтбокс вместе с уведомлением (0 - не прятать)
delay = 3000; // задержка исчезновения сообщения в миллисекундах (0 - не скрывать)
success_msg = "Ваше сообщение отправлено!"; // сообщение об успешной отправке
error_msg = "Ошибка отправки! Попробуйте позже."; // сообщение об ошибке
wait_msg = 'Идет отправка...'; // сообщение об отправке (оставить пустым чтоб не показывать)
redirect = ''; // страница, на котороую перейти после отправки (оставить пустым чтоб никуда не переходить)
action = $('[src $= mail\\.js]').attr('src').replace('js', 'php'); // путь к скрипту отправки почты

cur_id = '#' + $(this).attr('id');
if ($(cur_id).attr('data-hide') !== undefined) {
hide = parseInt($(cur_id).attr('data-hide'));
}

if ($(cur_id).attr('data-delay') !== undefined) {
delay = parseInt($(cur_id).attr('data-delay'));
}

cur_success = $(cur_id).siblings('.w-form-done').text().trim();
if (cur_success === 'Thank you! Your submission has been received!') {
$(cur_id).parent().find('.w-form-done div,.w-form-done p').text(success_msg);
}

cur_error = $(cur_id).siblings('.w-form-fail').text().trim();
if (cur_error === 'Oops! Something went wrong while submitting the form') {
$(cur_id).parent().find('.w-form-fail div,.w-form-fail p').text(error_msg);
}

cur_wait = $(cur_id).find('[data-wait]').attr('data-wait');
if (cur_wait !== 'Please wait...') {
wait_msg = cur_wait;
}

cur_redirect = $(cur_id).attr('data-redirect');
if (cur_redirect !== undefined) {
redirect = cur_redirect;
}

cur_action = $(cur_id).attr('action');
if (cur_action !== '/') {
action = cur_action;
}

submit_div = $(cur_id).find('[type = submit]');
submit_txt = submit_div.attr('value');
if (wait_msg !== '') {
submit_div.attr('value', wait_msg);
}

if ($(cur_id).attr('data-send') !== undefined) {
$('<input type="hidden" name="sendto" value="' + $(cur_id).attr('data-send') + '">').prependTo(cur_id);
}

if($(cur_id+' [name=Форма]').is('input')){
$(cur_id).find('[name=Форма]').val($(cur_id).attr('data-name'));
} else {
$('<input type="hidden" data-name="Форма" name="Форма" value="' + $(cur_id).attr('data-name') + '">').prependTo(cur_id);
}

if($(cur_id+' [name=Запрос]').is('input')){
$(cur_id).find('[name=Запрос]').val(document.location.search);
} else {
$('<input type="hidden" data-name="Запрос" name="Запрос" value="' + document.location.search + '">').prependTo(cur_id);
}

if($(cur_id+' [name=Заголовок]').is('input')){
$(cur_id).find('[name=Заголовок]').val(document.title);
} else {
$('<input type="hidden" data-name="Заголовок" name="Заголовок" value="' + document.title + '">').prependTo(cur_id);
}

if($(cur_id+' [name=Страница]').is('input')){
$(cur_id).find('[name=Страница]').val(document.location.origin + document.location.pathname);
} else {
$('<input type="hidden" data-name="Страница" name="Страница" value="' + document.location.origin + document.location.pathname + '">').prependTo(cur_id);
}

$('<input type="hidden" name="required_fields">').prependTo(cur_id);
required_fields = '';

required_fields = '';
$(cur_id).find('[required=required]').each(function() {
required_fields = required_fields + ',' + $(this).attr('name');
});
if(required_fields !== '') { $(cur_id).find('[name=required_fields]').val(required_fields); }

e.preventDefault();
var formData = new FormData($(cur_id)[0]);
$.ajax({
url: action,
type: 'POST',
processData: false,
contentType: false,
data: formData
})
.done(function(result) {
if (result.trim() == 'success') {
if (redirect !== '' && redirect !== '/-') {
document.location.href = redirect;
return (true);
}
$(cur_id).siblings('.w-form-fail').hide();
replay_class = '.w-form-done';
replay_msg = success_msg;
} else {
$(cur_id).siblings('.w-form-done').hide();
if (result === 'ERROR_REQUIRED') {
replay_msg = 'Не заполнено обязательное поле!'
} else {
replay_msg = error_msg;
console.log(result);
}
replay_class = '.w-form-fail';
}
replay_div = $(cur_id).siblings(replay_class);
replay_div.show();
if (hide) {
$(cur_id).hide();
}
submit_div.attr('value', submit_txt);
if(delay !== 0) {
if(hide_lbox === 1 && result == 'success') {
$('.lbox').delay(delay).fadeOut();
}
replay_div.delay(delay).fadeOut();
$(cur_id).delay(delay+1000).fadeIn();
}
if (result == 'success') {
$(cur_id).trigger("reset");
$(this).siblings('div[for]').text('');
$(this).find('textarea').val('');
}
});
if($(cur_id).attr('data-gform') !== undefined){
$(cur_id).find('[data-gfield]').each(function(indx) {
$(this).attr('name', $(this).attr('data-gfield'));
});
$.ajax({
type: 'post',
url: $(cur_id).attr('data-gform'),
data: $(this).serialize(),
dataType: "xml",
});
$(cur_id).find('[data-gfield]').each(function(indx) {
$(this).attr('name', $(this).attr('data-name'));
});
}
});
});
$('textarea').each(function(){if($(this).val().tri m() === '') $(this).val('');});
$('textarea').focus(function(){if($(this).val().tr im() === '') $(this).val('');});
$('.w-form [data-name]').each(function(indx) {
$(this).attr('name', $(this).attr('data-name'));
});
$('label[for^=file]').each(function() {
file_id = $(this).attr('for');
$(this).after('<input name="file[]" type="file" id="' + file_id + '" multiple style="display:none;">');
$('input#' + file_id).change(function() {
$(this).siblings('div[for]').text('Файлы прикреплены.');
});
});

Malleys 10.04.2018 15:13

action = "https://example.com/mail.php";

Nexus 10.04.2018 15:16

Malleys, абсолютный адрес - так себе решение.

Malleys 10.04.2018 15:46

Nexus,
Цитата:

Сообщение от AlexKarn
можно написать на примере любого адреса, дальше я пойму)))


AlexKarn 10.04.2018 16:13

вписал путь на файл, но к сожалению это не помогло...

laimas 10.04.2018 16:18

AlexKarn,
нужно знать путь к php-файлу относительно js-файла, иначе не получится. Либо сетевой путь от корня к известному каталогу укажите и не морочте себе голову.

Malleys 10.04.2018 16:18

Пробел не нужно в слове trim? Может это ошибка...

$('textarea').each(function(){if($(this).val().*!*tri m*/!*() === '') $(this).val('');});
$('textarea').focus(function(){if($(this).val().*!*tr im*/!*() === '') $(this).val('');});

j0hnik 10.04.2018 16:21

Malleys,
это форум порезал

рони 10.04.2018 16:48

AlexKarn,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

AlexKarn 10.04.2018 16:53

к сожалению не удается отредактировать свой пост, немного глючит форум похоже

AlexKarn 10.04.2018 16:55

Не могли бы вы поподробней объяснить про "путь к php-файлу относительно js-файла, иначе не получится", заранее благодарю!

j0hnik 10.04.2018 16:59

AlexKarn,
он всегда глючит, надо к списку тем выйти и по ссылке темы обратно зайти.

j0hnik 10.04.2018 17:08

AlexKarn,
если они в одной папке
action = "mail.php";

если в разных, нужно сначала указать путь до папки
если папка с php является дочерней по отношению к папке в которой js указываем путь так
action = "/папка с PHP/mail.php";

если не дочерняя нужно подняться к общему родителю и от него продолжать путь.
например так
action = "../../папка с PHP/mail.php";

../ -означает подняться вверх на уровень

но если абсолютный путь не сработал, то и это вряд ли будет.

Malleys 10.04.2018 17:11

Вы бы нам ссылку скинули, мы отправили бы кучу писем

AlexKarn 10.04.2018 17:16

Это абсолютный путь к файлу?

http://www.sitename.com/www/script/mail.php

или

http://www.sitename.com/script/mail.php

j0hnik 10.04.2018 17:17

AlexKarn,
оба абсолютные. но пути разные.

AlexKarn 10.04.2018 17:18

Понял, оба 0 результата, спасибо!
Буду дальше искать.

j0hnik 10.04.2018 17:21

AlexKarn,
закиньте скрипты в одну папку, укажите
action = "mail.php";
и проверьте работоспособность. мб не в путях дело.

laimas 10.04.2018 17:29

Цитата:

Сообщение от AlexKarn
Это абсолютный путь к файлу?

Нет, это сетевой путь, абсолютный путь, это путь на диске от его корня.
А эти сетевые пути, это путь от корня документов сайта.

AlexKarn 10.04.2018 17:34

Если их поместить в одну папку, они 100% не будут работать,
так как файрвол хостинга их блокирует, это требование хостинга было
перенести файл в папку /script, но на другом хостинге стоит полный дубликат сайта и всё работает.

j0hnik 10.04.2018 17:35

AlexKarn,
странный хостинг у вас

AlexKarn 10.04.2018 17:37

сам в шоке, новая политика безопасности типа

AlexKarn 10.04.2018 17:56

Приведите пожалуйста пример, что является абсолютным путем, а то я запутался. Спасибо!

laimas 10.04.2018 18:18

Вам не нужен пусть абсолютный, его используют только в серверных сценариях, когда необходимо.
А что такое абсолютный, это например вам определено хостом место на диске E:\...\...\папка домена вашего\...\корень документов домена\... и далее к какому либо скрипту.

Вы должны использовать либо относительный путь от js-файла, либо указывать от корня документов. В любом из этих случаев нужно учитывать, что у вас CMS, а ее пути определяются конфигурацией, то есть, если какой либо каталог используется в разных темах CMS, то часть пути будет обязательно определяться текущей конфигурацией.


Часовой пояс GMT +3, время: 13:43.