#151 2015.08.21 08:39

despod
Участник
Откуда: Россия
Зарегистрирован: 2010.03.18
Сообщений: 73
Карма: 0
Профиль

Re: Вопрос-Ответ по JavaScript

Доброго времени суток!

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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$("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 2015.08.21 09:55

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Вопрос-Ответ по JavaScript

у jquery есть функция delay.
в твоем случае, как-то так.

Код:

1
$("#errors").html('error').delay(5000).fadeOut("slow");

Неактивен

#153 2015.08.22 08:51

despod
Участник
Откуда: Россия
Зарегистрирован: 2010.03.18
Сообщений: 73
Карма: 0
Профиль

Re: Вопрос-Ответ по JavaScript

только теперь другая проблема
выводит норм только один раз
только я оповещаю о добавлении сообщения

Код:

1
$("#No_errors").html(data).delay(5000).fadeOut("slow");

пишу онлайн чат без перезагрузки вот полный код js

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
///запись в бд
$("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);

при успешном добавлении вылазеет сообщение что успешно отправлено
но когда я пишу повторно сообщение не вылазеет почему то вот сам пхп

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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;
}

Вложения

Отредактировано despod (2015.08.22 09:08)

Неактивен

#154 2015.08.22 09:19

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Вопрос-Ответ по JavaScript

fadeOut скрыл твой элемент $("#errors"). соответственно тебе его нужно заново сделать видимым. Например, через fadeIn.

Код:

1
$("#errors").html('error').fadeIn(400).delay(5000).fadeOut("slow");

Неактивен

#155 2015.09.26 09:21

despod
Участник
Откуда: Россия
Зарегистрирован: 2010.03.18
Сообщений: 73
Карма: 0
Профиль

Re: Вопрос-Ответ по JavaScript

как можно обновить страницу без перезагрузки , чтобы jquery и php код были на одной странице?

Неактивен

#156 2015.09.26 15:08

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Вопрос-Ответ по JavaScript

через ajax

Неактивен

#157 2015.09.26 15:25

despod
Участник
Откуда: Россия
Зарегистрирован: 2010.03.18
Сообщений: 73
Карма: 0
Профиль

Re: Вопрос-Ответ по JavaScript

Вот если например в одном файле пхп код в другом аякс работает норм,  а вот в одном файле все вместе не работает

Неактивен

#158 2015.10.06 07:51

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Вопрос-Ответ по JavaScript

despod мда, обьяснил. Я например ничего не понял.
Покажи код

Неактивен

#159 2016.01.07 09:52

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Вопрос-Ответ по JavaScript

Решил написать функцию которая асинхронно будет подгружать спрайты, DOM, и еще пару вещей а по завершению выполнить один калбек. Но блин столкнулся с такой нелепой проблемой аж смешно
Никак не могу закинуть в асинхронную функцию число итератор из цыкла

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 секунд:
Стоило только написать здесь как пришла еще одна мысль обернуть тело цыкла и на ура сработало. Блин долбил эту функцию более часа)

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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();
}
});
})();
}
}

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.012 s