Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) 1 [2]  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Ajax, Не соображу как правильно сделать
DragonNoir  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 47
Пользователь №: 42691
На форуме: 8 месяцев, 22 дня
Карма: 2




Покажите ваш последний вариант кода на PHP и JS


--------------------
- Сколько тебе надо времени на задачу?
- Месяц.
- А если дам тебе помощника?
- Тогда два месяца.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 24 дня
Карма: 7




Я уже по 150 раз попеределывал и ничего, все пока вернул на прежнее место.

Вот к примеру взять код похожий на ваш
<?php

define('KEY', true);

//////////////////////////////////////////////////
// Подключаем языковой файл
include $_SERVER['DOCUMENT_ROOT'].'/language/ru.php';

// Получаем файл переменных
include_once $_SERVER['DOCUMENT_ROOT'].'/libs/variables.php';

// Подключаем файл общих функций
include_once $_SERVER['DOCUMENT_ROOT'].'/libs/default.php';
/////////////////////////////////////////////////////////


//Если переменная fio передана
if (isset($_POST["fio"])) {

/* Задаем переменные */
$dat=date("d.m.Y");
$fio = htmlChars($_POST["fio"]);
$tema = htmlChars($_POST["tema"]);
$email = htmlChars($_POST["email"]);
$mesage = htmlChars($_POST["message"]);
$bezspama = htmlspecialchars($_POST["bezspama"]);
$pattern = "#^[а-яё\-\sa-z]+$#ius";


$subject = OLM_CONTACT;
$message = "Дата: $dat
======================================================
Данные.
\n
ФИО: $fio \n
Тема сообщения: $tema \n
E-mail Отправителя: $email
------------------------------------------------------
Сообщение.
\n
$mesage";



if (!preg_match($pattern, $fio)) {
$error[] = OLM_FIO;

}
if (!preg_match($pattern, $tema)) {
$error[] = OLM_NOTEMA;

}

if (!preg_match("/.+@.+\..+/i",$email)) {
$error[] = OLM_NOMAIL;

}

if (!empty($bezspama)) {
$error[] = OLM_SPAM;

}


if(!count($error)) {

include $_SERVER['DOCUMENT_ROOT'].'/libs/mailer.php';

$mail = new ALEX_Mailer($message);

$mail -> createTo(OLM_EMAIL_SEND);
$mail -> createSubject($subject);
$mail -> createFrom(OLM_SUPPORT_EMAIL);
$mail -> setHtml();
$error = $mail -> sendMail();


$info[] = OLM_KONTAKT_OK;

echo json_encode(array('success'=>true, 'getInfo'=> getInfo($info)));

} else{

echo json_encode(array('success'=>false, 'getInfo'=> getInfo($info))); }
}



Вот скрипт
$(document).ready(function () {
$("#form_kontact").submit(function () {

var form = $(this);
var data = form.serialize();

console.log(data);

$.ajax({
type: "POST",
url: './modules/pages/contact.php',
cache: false,
dataType: 'html',
data: data,
beforeSend: function(data) { // сoбытиe дo oтпрaвки

form.find('input[type="submit"]').attr('disabled', 'disabled'); // oтключим кнoпку, чтoбы нe жaли пo 100 рaз
},
success: function (data)
{

$("#kontact").html(data).fadeIn(400);

form.find('input,textarea').not('input[type="submit"]').val('');
},

error: function (data)
{

$("#kontact").html(data).fadeIn(400);

},

});
return false; // вырубaeм стaндaртную oтпрaвку фoрмы
});
});


И куда ставить response.getInfo не доходит, башка сейчас вообще че то не варит
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 24 дня
Карма: 7




Если ставить
echo json_encode(array('success'=>true, 'getInfo'=> getInfo($info)));

} else{

echo json_encode(array('success'=>false, 'getInfo'=> getInfo($info))); }
}


То сообщения вообще не выходят, ни плохое ни хорошее
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
DragonNoir  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 47
Пользователь №: 42691
На форуме: 8 месяцев, 22 дня
Карма: 2




Т.к. вы полностью код модального окна формируете на стороне сервера (что в корне неверно), то код должен выглядеть примерно так:

$info[] = OLM_KONTAKT_OK;

echo json_encode(array('success'=>true, 'getInfo'=> getInfo($info)));

} else{

echo json_encode(array('success'=>false, 'getInfo'=> getInfo($info))); }
}


заменить на

$info[] = OLM_KONTAKT_OK;

echo json_encode(array('success'=>true, 'response'=> getInfo($info)));

} else{

echo json_encode(array('success'=>false, 'response'=> getError($error))); }
}



Соответственно в JS будет

$.ajax({
type: "POST",
url: './modules/pages/contact.php', //непонятно зачем точка в начале урла?
cache: false, //это лишнее
dataType: 'json',
data: data,
beforeSend: function(data) { // сoбытиe дo oтпрaвки
form.find('input[type="submit"]').attr('disabled', 'disabled'); // oтключим кнoпку, чтoбы нe жaли пo 100 рaз
},
success: function (data){
$("#kontact").html(data.response).fadeIn(400);
if(data.success){
form.find('input,textarea').not('input[type="submit"]').val('');
//Удалить атрибут disabled у кнопки
}
}
}
);


В своем JS вы неправильно использовали обработчик error. Он срабатывает, если сервер вернул один из кодов ошибки (например 404 или 500).


--------------------
- Сколько тебе надо времени на задачу?
- Месяц.
- А если дам тебе помощника?
- Тогда два месяца.
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 24 дня
Карма: 7




DragonNoir
Большое вам спасибо, отлично работает! Плюс в карму точно

Цитата
Т.к. вы полностью код модального окна формируете на стороне сервера (что в корне неверно)

А почему неверно, это модальное окно на чистом CSS и без всяких скриптов и заморочек.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
DragonNoir  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 47
Пользователь №: 42691
На форуме: 8 месяцев, 22 дня
Карма: 2




Цитата (Astin @ 4.04.2016 - 11:54)
А почему неверно, это модальное окно на чистом CSS и без всяких скриптов и заморочек.

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

В вашем конкретном случае правильно бы было сформировать html код модального окна на самой странице (там, где <div id="kontact"></div>), а от сервера надо получать только данные для размещения и на стороне JS менять контент модального окна.


--------------------
- Сколько тебе надо времени на задачу?
- Месяц.
- А если дам тебе помощника?
- Тогда два месяца.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 24 дня
Карма: 7




Цитата (DragonNoir @ 4.04.2016 - 13:14)
Цитата (Astin @ 4.04.2016 - 11:54)
А почему неверно, это модальное окно на чистом CSS и без всяких скриптов и заморочек.

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

В вашем конкретном случае правильно бы было сформировать html код модального окна на самой странице (там, где <div id="kontact"></div>), а от сервера надо получать только данные для размещения и на стороне JS менять контент модального окна.

Может, может... Все же вы где то и правы. Ноя пока, да и вообще в ближайший год точно не буду менять вывод этих сообщений. В ПХП у меня формируется в основном только эти пару
модальных окон, остальное все на шаблонах tpl. Но конечно на заметку возьму ваше сказанное, да и к тому же я как то тоже об этом думал, но сейчас мне не до этих двух модальных окон, то есть одно окно, но с разной расцветкой в зависимости от сообщения.

Ну а ладно, все равно Большое вам СПАСИБО за помощь! Теперь буду впредь знать как нужно
использовать подобные случаи.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25989
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 23 дня
Карма: 725

Не курю:
1 год, 2 месяца, 9 дней


Цитата
Плюс в карму точно

DragonNoir тебя развели, я за готовые решения в рублях беру, а не в плюсах))


Цитата
А почему неверно, это модальное окно на чистом CSS и без всяких скриптов и заморочек.


вот представь чту у тебя окно состоит из 2х частей

1. Заголовок
2. Содержание

я бы сделал так - вернул бы с сервера объёкт

echo json_encode(
'winopt'=>array(
'title'=>'Заголовок',
'message'=>'Текст'
)
);



на клиенте мой объект бы выглядел так

winopt {
title : 'Заголовок',
message : 'Текст',

}



и в окно бы вставлял winopt.title и winopt.message - не трогая вёрстку

а в твом варианте - всё время лазить в серверный скрипт - чтобы поправить вёрстку - -это ужс как не удобно, да ещё всё заэкранировано...


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 24 дня
Карма: 7




Цитата
DragonNoir тебя развели, я за готовые решения в рублях беру, а не в плюсах))

biggrin.gif

Цитата
я бы сделал так - вернул бы с сервера объёкт

Игорь_Vasinsky Спасибо за пояснение, я обязательно над этим подумаю, и будет время
переделаю
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
DragonNoir  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 47
Пользователь №: 42691
На форуме: 8 месяцев, 22 дня
Карма: 2




Цитата (Astin @ 4.04.2016 - 12:47)
DragonNoir тебя развели, я за готовые решения в рублях беру, а не в плюсах))

Да мне побоку. Было время - я помог. Если мой код прибавил человеку знаний и понимания - хорошо, если нет - что ж, "чем меньше вы знаете, тем больше я буду востребован как специалист" (с)


--------------------
- Сколько тебе надо времени на задачу?
- Месяц.
- А если дам тебе помощника?
- Тогда два месяца.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) 1 [2]  Ответ в темуСоздание новой темыСоздание опроса