Вы не зашли.
Главная » JavaScript » Вопрос-Ответ по JavaScript
#151. despod Off (0)
Участник
2015.08.21 08:08
Доброго времени суток!

есть некий код

Код:
$("input[type='submit']").click(function() {
var mess = $("#pole").serialize();
$.ajax({
type: "POST",
url: "post.php?total=add",
cache: false,
data: mess,
success: function(data) {
if(data == 1 || data == 0){
$("#errors").html('<span style="background-color:red; color:#000000; border: 1px solid #800000; padding:3px 4px 3px 5px; ">Сообщение не должно мене 3х символов или быть бустым</span>');
} else if(data == 2){
$("#errors").html('<span style="background-color:red; color:#000000; border: 1px solid #800000; padding:3px 4px 3px 5px; ">Сообщение не должно привышать более 300 символов</span>');
}else{
$("#No_errors").html(data).show("slow");
$("#pole").val('');
}
},
error: function(xhr, str){
alert("Возникла ошибка!");
}
});
});
как мне сделать окна ошибок чтобы они плавно исчезали?
#152. Gemorroj Off (107)
Administrator
2015.08.21 09:09
у jquery есть функция delay.
в твоем случае, как-то так.
Код:
$("#errors").html('error').delay(5000).fadeOut("slow");
#153. despod Off (0)
Участник
2015.08.22 08:08
только теперь другая проблема
выводит норм только один раз
только я оповещаю о добавлении сообщения
Код:
$("#No_errors").html(data).delay(5000).fadeOut("slow");
пишу онлайн чат без перезагрузки вот полный код js

Код:
///запись в бд
$("input[type='submit']").click(function() {
var mess = $("#pole").serialize();
$.ajax({
type: "POST",
url: "post.php?total=add",
cache: false,
data: mess,
success: function(data) {
if(data == 1 || data == 0){
$("#errors").html('<span style="background-color:red; color:#000000; border: 1px solid #800000; padding:3px 4px 3px 5px; ">Сообщение не должно мене 3х символов или быть бустым</span>');
} else if(data == 2){
$("#errors").html('<span style="background-color:red; color:#000000; border: 1px solid #800000; padding:3px 4px 3px 5px; ">Сообщение не должно привышать более 300 символов</span>');
}else{
$("#No_errors").html(data).delay(5000).fadeOut("slow");
$("#pole").val('');
}
},
error: function(xhr, str){
alert("Возникла ошибка!");
}
});
});
});
////////обновление чата
setInterval(function(){
$.ajax({
type: "GET",
url: "post.php?total=item",
cache: false,
dataType : "text",
success: function(data) {
$(".blok_content").html(data);
},
error: function(xhr, str){
alert("Возникла ошибка!");
}
});
}, 200);
при успешном добавлении вылазеет сообщение что успешно отправлено
но когда я пишу повторно сообщение не вылазеет почему то вот сам пхп

Код:
function sql_insert($db,$zapros,$param){
//$sql = "INSERT INTO product (product_name) OUTPUT INSERTED.product_id VALUES (?)";
$sth = $db->prepare($zapros);
$sth->execute($param);
return $sth;
}
function sql($db, $sql){
$addprepare = $db -> query($sql);
return $addprepare;
}
$time = time();
$printText = isset($_POST['printText']) ? mysql_real_escape_string(trim($_POST['printText'])) : '';
 
$c = sql($db,"DELETE FROM `online_cht` WHERE `time` < ".($time - 600)."");
 
switch(isset($_GET['total']) ? trim($_GET['total']) : ''){
case 'item':
$x = sql($db,"SELECT * FROM `online_cht` ORDER BY time DESC");
if($x->rowCount() == 0){
echo 'Сообщений в базе нет';
}else{
while($r = $x->fetch(PDO::FETCH_ASSOC)) {
echo $r["name"].' '.$r['message']."<br/>";
}
}
break;
case 'add':
if($printText == ''){
echo 0;
}else {
if(mb_strlen($printText,'UTF-8')<3){
echo 1;
}else if(mb_strlen($printText,'UTF-8') > 300){
echo 2;
}else{
if(sql_insert($db,"INSERT INTO `online_cht` (id,name,message,time) VALUES (?,?,?,?)",array('1','test',$printText,$time))){
echo 'Сообщение успешно добавлено';
unset($printText);
}
}
}
break;
}
Вложения
chat.jpg 467kb {1427x812} [загрузок: 955]
Отредактировано despod (2015.08.22 09:09)
#154. Gemorroj Off (107)
Administrator
2015.08.22 09:09
fadeOut скрыл твой элемент $("#errors"). соответственно тебе его нужно заново сделать видимым. Например, через fadeIn.
Код:
$("#errors").html('error').fadeIn(400).delay(5000).fadeOut("slow");
#155. despod Off (0)
Участник
2015.09.26 09:09
как можно обновить страницу без перезагрузки , чтобы jquery и php код были на одной странице?
#156. Gemorroj Off (107)
Administrator
2015.09.26 15:03
через ajax
#157. despod Off (0)
Участник
2015.09.26 15:03
Вот если например в одном файле пхп код в другом аякс работает норм,  а вот в одном файле все вместе не работает
#158. TLENS Off (14)
Moderator
2015.10.06 07:07
despod мда, обьяснил. Я например ничего не понял.
Покажи код
#159. TLENS Off (14)
Moderator
2016.01.07 09:09
Решил написать функцию которая асинхронно будет подгружать спрайты, DOM, и еще пару вещей а по завершению выполнить один калбек. Но блин столкнулся с такой нелепой проблемой аж смешно
Никак не могу закинуть в асинхронную функцию число итератор из цыкла
Код:
this.async = function (fns, callback) {
var countFunction = 0
for (var k in fns) {
countFunction ++;
var i = k;
fns[k].fn(function (result) {
var j = k;
console.log(j, i, k);
fns[j].callback(result);
if (--countFunction < 1) {
callback();
}
});
}
}
в результате i, j, k равно одному и тому же
Когда то уже сталкивался с таким но вроде как то так решал эту задачу а сейчас не врубаюсь
Добавлено спустя   4 минуты  59 секунд:
Стоило только написать здесь как пришла еще одна мысль обернуть тело цыкла и на ура сработало. Блин долбил эту функцию более часа)
Код:
this.async = function (fns, callback) {
var countFunction = 0
for (var k in fns) {
(function () {
countFunction ++;
var i = k;
fns[k].fn(function (result) {
console.log(i);
fns[i].callback(result);
if (--countFunction < 1) {
callback();
}
});
})();
}
}
Страниц: 114 15 16 Все
Главная
WEB
PunBB Mod v0.6.2
0.021 s