Вы не зашли.
Доброго времени суток!
есть некий код
Код:
$("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("Возникла ошибка!"); |
} |
|
}); |
|
|
|
}); |
как мне сделать окна ошибок чтобы они плавно исчезали?
у jquery есть функция
delay.
в твоем случае, как-то так.
Код:
$("#errors").html('error').delay(5000).fadeOut("slow"); |
только теперь другая проблема
выводит норм только один раз
только я оповещаю о добавлении сообщения
Код:
$("#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}
[
загрузок: 1095]
Отредактировано despod (2015.08.22 09:09)
fadeOut скрыл твой элемент $("#errors"). соответственно тебе его нужно заново сделать видимым. Например, через fadeIn.
Код:
$("#errors").html('error').fadeIn(400).delay(5000).fadeOut("slow"); |
как можно обновить страницу без перезагрузки , чтобы jquery и php код были на одной странице?
Вот если например в одном файле пхп код в другом аякс работает норм, а вот в одном файле все вместе не работает
despod мда, обьяснил. Я например ничего не понял.
Покажи код
Решил написать функцию которая асинхронно будет подгружать спрайты, 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(); |
} |
}); |
})(); |
|
} |
} |