Вы не зашли.
Доброго времени суток!
есть некий код
Код:
| $("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}
[
загрузок: 1379]
Отредактировано despod (2015.08.22 06:06)
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(); |
| } |
| }); |
| })(); |
| |
| } |
| } |