Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Веб - Программирование > AJAX

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 15.06.2012, 00:42   #1
Неактивный пользователь
 
Пол:Мужской
Регистрация: 15.06.2012
Сообщений: 2
Репутация: 0
По умолчанию Отправляется 2 раза форма

Отправляется 2 раза, заносится 2 записи в БД и естественно 2жды выводится. Я не могу разобраться в чём проблема.В этом новичок.

вот скрипт
Код:
$(document).ready(function(){
 
 
    $(".gray").live("click", function(e) {
 
    var name = $("#nameComment").val();
    var addComment = $("#addComment").val();
 
    
 
    if(typeof name === 'undefined') name='';    
 
 
        var comment = $("#textComment").val();
        var post_url = $("#posturlComment").val();
        var postO_url = $("#posturlOpenComment").val();
 
    var dataString = 'nameComment='+ name + '&textComment=' + comment + '&posturlComment=' + post_url +'&posturlOpenComment=' + postO_url ;
    if(post_url=='') {alert('Error')};
 
 
    if(comment==='') 
        {
        alert('Пожалуйста заполните все поля');
        }
    else
    {
    $("#ajaxComment").show();
    $("#ajaxComment").fadeIn(400).html('<img src="/reader/comment/images/comment/ajax-bar.gif" align="absmiddle">&nbsp;<span class="loading"></span>');
    $.ajax({
        type: "POST",
        url: "",
        data: dataString,
        cache: false,
        success: function(html){
            if(html!=='ERR1' && html!=='ERR2' && html!=='ERR3' && html!=='ERR4') {
                    $("#allComment").append(html);
                    //$("ol#update li:last").fadeIn("slow");
                    $("#nameComment").val("");
                    $('#textComment').text("");
                    $("#textComment").focus();
                    $("#ajaxComment").hide();
                    
                }
                else
                {
                $("#messComment").html('');
                $("#messComment").show();
                $("#ajaxComment").hide();
                if(html=='ERR1')$("#messComment").append("Ошибка: Имя должно состоять более чем из 3 символов<br/>");
                if(html=='ERR2')$("#messComment").append("Ошибка: E-Mail указан неверно<br/>");
                if(html=='ERR3')$("#messComment").append("Ошибка: Отсутствует текст комментария<br/>");
                if(html=='ERR4')$("#messComment").append("Ошибка: Не удается установить тип комментария. Попробуйте позже");
                $("#messComment").fadeOut(3000);
                }
            }
        });
        
    }
    e.preventDefault();
    });
 
});
вот обработчик
Код:
<?php
 
 
 
class Comments extends Controller_Base {
 
    var $path   = ''; // path to page on comments
    var $table  = 'comments'; // table comments
    var $prefix = 'rche_'; // prefix table comments
    var $dle = 'dle_';//prefix dle
    var $dtable = 'users';//table users dle
    var $event  = '';
    var $key    = 'e34d9147f42016a32a9bab982492323547e121ce'; // secret key for ajax
    var $login  = false; // login user or email and name
    var $user   = array(); // user info if login
    var $admin  = false; // admin option
    var $gravatar   = false; // avatar from gravatar.com
    var $regos  = true;
function index () {
        $this->event=@$_POST['eventComments'];
        if(@$_GET['eventComments']=='del' and @$_GET['noajax']==1)$this->event=@$_GET['eventComments'];
 
        if($this->event=='save') $status=$this->saveComments();
        if($this->event=='del') $status=$this->delComments();
        if($this->event=='edit') $status=$this->editComments();
        if($this->event=='')$status=NULL;
        return $status;
    } 
function itemComments($username,$date,$text,$img,$id,$autor=false, $userid,$moder) {
    global $member_id,$is_logged,$moderate;
    $text   = $this->myutf8_substr2($text,0,103);
 
    if($moder && !$moderate && ($member_id['user_group']==1||$member_id['user_group']==2||$member_id['user_group']==3||$member_id['user_group']==7||$member_id['user_group']==8)) $moder = '<span class="modComment" title="Не отмодерировано">&nbsp;&nbsp;&nbsp;Не отмодерировано</span>';
    //$reply='<a href="javascript://" rel="'.$id.'" class="replyComment" title="Ответить на комментарий: '.$username.'">Ответить</a>';
//  if($autor or $this->admin)$edit=' | <a href="javascript://" rel="'.$id.'" class="editComment" title="Редактировать комметарий">Редактировать</a>';
//  if($member_id['user_group'] == 1 or $member_id['user_group'] == 2) $del=' | <a href="http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'?id='.$id.'&passport='.$possport.'&noajax=1&eventComments=del" onclick="return true" rel="'.$id.'" passport="'.$possport.'" class="delComment" title="Удалить комментарий">Удалить</a>';
    if($moderate){
    $mod = '|<a href="http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'?id='.$id.'&mod=1" class="editComment" title="Отмодерировать комметарий">Отмодерировать</a>';
    $del='  <a href="http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'?id='.$id.'&del=1" class="delComment" title="Удалить комментарий">Удалить</a>';
    }
    $uslink="http://".$_SERVER['HTTP_HOST']."/user/$username/";
 
    $out='<div class="itemComment" id="itemComment-'.$id.'">
        <div class="avatarComment">
            <a href="'.$uslink.'" title="Смотреть профиль пользователя: '.$username.'">
                <img src="'.$img.'" width="48" height="48" border="0" alt="Аватар пользователя: '.$username.'"/></a>
            </div>
        <div class="panelComment">
            <a class="userComment" href="'.$uslink.'" title="Смотреть профиль пользователя: '.$username.'">'.$username.'</a>
            <span class="dateComment" title="Дата, время комментария">'.$date.$moder.'</span>
            
        </div>
        <div class="bodyComment">
            '.$text.'
        </div>
        <div class="footerComment">
            
            '.$reply.$edit.$del.$mod.'
        </div>
    ';
    return $out;
        
    }
 
function outComments() {
    global $moderate;
    echo '<div id="rcheComments">
    <div id="allComment">';
    $sql="SELECT {$this->prefix}{$this->table}.*, rche_users.photo, rche_users.username, rche_users.userID FROM {$this->prefix}{$this->table} 
        LEFT JOIN rche_users ON {$this->prefix}{$this->table}.user =rche_users.userID
        WHERE {$this->prefix}{$this->table} .url='".$this->getUrl()."' ORDER BY {$this->prefix}{$this->table}.id ASC";
    
    $allComm=$this->registry['DB']->getAll($sql);
        
    if(count($allComm)>0):
    // subcomments
    foreach($allComm as $item):
        if($item['reply']==0)$sortcomm[$item['id']]=$item;
        if($item['reply']>0)
            {
            if(isset($path[$item['reply']]))
                {
                $str='$sortcomm';
                foreach($path[$item['reply']] as $pitem):
                    $rep=$item['reply'];
                    $str.="[$pitem][sub]";
                endforeach;
                $str.="[{$item['reply']}][sub]";
 
                $str.="[{$item['id']}]";
                                $str.='=$item;';
 
                eval($str);
 
                foreach($path[$item['reply']] as $pitem):
                    $path[$item['id']][]=$pitem;
                endforeach;
 
                $path[$item['id']][]=$item['reply'];
                }
                else
                {
                $sortcomm[$item['reply']]['sub'][$item['id']]=$item;
                $path[$item['id']][]=$item['reply'];
                }
            }
        endforeach;
    $this->tree_print($sortcomm);
 
    else: echo '<p align="center" style="color:#800000;">Комментариев нет</p>'; endif;
 
 
    echo '</div>
    <div id="messComment"></div>
    <div id="ajaxComment"></div>';
    echo $this->formComment();
    }
 
function tree_print(&$a_tree) {
    foreach($a_tree as $sub)
        {
        $this->outItem($sub);
        echo "</div>";
        }
    }
 
function outItem($item) {
global $is_logged,$db;
        $autor=false;
        if (intval($item['moderate'])==0) $mod = true;
        $userid=$item['user'];
        $row = $db->super_query( "select * from " . PREFIX . "_users where user_id = $userid" );
        $img=$SERVER['HTTP_HOST'].'/uploads/fotos/'.$row['foto'];
        if ($img==$SERVER['HTTP_HOST'].'/uploads/fotos/'){
            $img="http://uroboros-team.ru/templates/Mangani/images/noavatar.png";
        }
        $item['name'] = $row['name'];
 
    echo $this->itemComments(
        $item['name'],
        $this->get_Date($item['date']),
        html_entity_decode($item['comment']),
        $img,
        $item['id'],
        $autor,
        $userid,
        $mod);
        }
        
        
function saveComments() {
global $is_logged,$member_id;
    
    $name   = trim(strip_tags($_POST['nameComment']));
    $text   = PHP_slashes(htmlspecialchars(markhtml(trim(rawurldecode($_POST['textComment'])))));
    
    $post_url = htmlspecialchars(trim($_POST['posturlComment']));
    $urlOpen = htmlspecialchars(trim($_POST['posturlOpenComment']));
        $error  = false;
    $img=$member_id['photo'];
    if(strlen($text) <= 1 ){$error=true;$msg=3;}
    if(strlen($post_url)>50 or strlen($post_url)<10){$error=true;$msg=4;}
 
    if($error)
        {
        echo mb_strlen($text,'utf-8');
        exit;
        }
 
    $date=$this->get_Date();
    $time=time();
    $mode = 1;
    if (!in_array($member_id['group'], array(1,2,3,8,9))){
            $sql="INSERT INTO {$this->prefix}{$this->table} (`reply`,`user`,`name`,`email`,`comment`,`date`,`url`,`pass`,`urlOpen`,`moderate`)
        VALUE ('$replyComment','{$member_id['user_id']}','$name','$email','$text','$time','$post_url','$pass','$urlOpen','$mode')";
        }
    $this->registry['DB']->execute($sql);
 
    
 
    if(intval($_POST['noAjax'])<>1):
    echo $this->itemComments(
        $name,
        $date,
        html_entity_decode($text),
        $img,
        $lastId,
        true,
        $user,
        $mode);
 
        exit;
    endif;
    }
function formComment()
    {
    global $user,$is_logged,$member_id;
 
 
        $name='<tr><td class="section-two">'.$member_id['name'].'</td>';
        
 
    $url=$this->getUrl();
    $urlOpen=$this->getUrl(false, 'open');
    
    $form = '<h3 id="newComment">Оставить свой комментарий </h3>';
    if($this->regos && !$is_logged){
    $form.= '<p align="center" color="red">Пользователи находящиеся в группе <strong>"Гости"</strong><br>
    Не могут комментировать<br>
    Пожалуйста <a href="http://'.$_SERVER['HTTP_HOST'].'index.php?do=register">Зарегистрируйтесь</a>
    </p>';
 
    }else{
    $form.='<form action="" method="post" id="formComment">
        <input name="noAjax" id="noAjax" value="0" type="hidden">
        <input name="posturlComment" id="posturlComment" value="'.$url.'" type="hidden">
        <input name="posturlOpenComment" id="posturlOpenComment" value="'.$urlOpen.'" type="hidden">
        <table id="tableComment">
        '.$name.'
        <tr><td><textarea name="textComment" id="textComment" class="textareaComment"></textarea></td></tr>
        </table>
        <center><input value="Комментировать" name="submit" type="submit" class="gray"/></center>
    </form>';
    }
    $form.='</div><p align="center"><a href="http://imarceting.com" style="font:11px tahoma;color:#999;text-decoration:none;" target="_blank">&copy; Marceting</a></p>';
    return $form;
    }
 
function getUrl($explode=false, $open = '') {
        $url=$_SERVER["REQUEST_URI"];
        if($this->admin==true) {
           $u=explode('?',$url);
           $e=explode('&',$u[1]);
           $i=0;
           foreach($e as $item)
            {
            $i++;
            $data=explode('=',$item);
            if($data[0]=='pass') continue;
            $newQuery.=$item;
            if($i<count($e))$newQuery.='&';
            $newQuery='?'.$newQuery;
            if(substr($newQuery, -1)=='&')$newQuery=substr($newQuery, 0, strlen($newQuery)-1);
            }
           $url="{$u[0]}{$newQuery}";
        }
        if($explode)
            {
            $url=explode('?',$_SERVER['REQUEST_URI']);
            $url=$url[0];
            }
        if($open=='open')return urlencode($url);
        return md5($url);
    }
function outModerate(){
    global $is_logged,$member_id,$db;
       if ($is_logged){
           if($db){
               if($member_id['user_group'] == 1 || $member_id['user_group'] == 2 || $member_id['user_group'] == 3){
               $id_comm = intval($_GET['id']);
               $a_url = "http://".$_SERVER['HTTP_HOST']."/reader/moderate.php";
               if($_GET['del']==1){
                  $sql="DELETE FROM {$this->prefix}{$this->table} WHERE id = '$id_comm' LIMIT 1";
                  $this->registry['DB']->execute($sql);
                  header('Location: '.$a_url);
                   }
                if($_GET['mod'] == 1){
                    $sql = "UPDATE {$this->prefix}{$this->table} set moderate = '1' WHERE id = '$id_comm' " ;
                    $this->registry['DB']->execute($sql);
                    header('Location: '.$a_url);
                    }   
                    echo '<div id="rcheComments">
                    <h3 class="titleComment">Комментарии ожидающие модерации</h3>
                    <div id="allComment">';
                    $sql="SELECT {$this->prefix}{$this->table}.* FROM {$this->prefix}{$this->table} WHERE {$this->prefix}{$this->table}.moderate = '0' ORDER BY {$this->prefix}{$this->table}.id ASC";
                    
                    $allComm=$this->registry['DB']->getAll($sql);
        
    if(count($allComm)>0):
    
    foreach($allComm as $item):
        if($item['reply']==0)$sortcomm[$item['id']]=$item;
        endforeach;
            $this->tree_print($sortcomm);
            
    else: echo "Комментариев ожидающих модерации нет";
    endif;
    echo '</div>
    <div id="messComment"></div>
    <div id="ajaxComment"></div>';              
                }
                else {
                    die ("Вашего ранга недостаточно");
                     }
                }
            else {
                 die ("Соединение с БД не установлено");    
                 }
            }
        else {
            die ("Вы не вошли под учётной записью");        
        }   
}       
           
 
 
function get_Date($shtamp='') {
        if($shtamp=='')$shtamp=time();
        $MonthNames=array("Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря");
        $date   = date('d',$shtamp).' '.$MonthNames[date('n',$shtamp)-1].' '.date('Y',$shtamp).'г, '.date('H',$shtamp).'ч '.date('i',$shtamp).'мин';
        return $date;
    }
 
    
    
 
      function len_utf($stren){
      return preg_replace('/[^\s]{20}[^\s]+/', '', $stren);
      }
      function myutf8_substr2($str,$from,$len){
      # utf8 substr
      return mb_substr($str,$from,$len,'utf-8');
 
}
 
}
?>
marceting вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: шумоглушитель litened 60-30 nkdполировочная пастастолы компьютерные угловыеРекомендуем гипермаркет КНС.ру - Synology DS223 купить - Подарок каждому покупателю!интернет-магазин КНС Нева предлагает монитор Digma Progress 24A501F - поставка техники в СПБ и города северо-запада России.


Старый 15.06.2012, 18:11   #2
Alan2006
Постоялец
 
Пол:Мужской
Регистрация: 02.07.2009
Сообщений: 393
Репутация: 79
По умолчанию Re: Отправляется 2 раза форма

Вместо
Цитата:
Сообщение от marceting Посмотреть сообщение
Код:
e.preventDefault();

попробуй
Код:
return false;
Добавлено через 5 минут

+ скобки не считал но, по-моему, нужно вынести это перед последним "})".
но это не точно...
__________________
Каждый человек, которому вы ответили на форуме "гугл в помощь" - потенциальный "возвращенец" в винды. (ц)

Последний раз редактировалось Alan2006; 15.06.2012 в 18:18..
Alan2006 вне форума
 
Ответить с цитированием Вверх
Старый 16.06.2012, 20:37   #3
marceting
Неактивный пользователь
 
Пол:Мужской
Регистрация: 15.06.2012
Сообщений: 2
Репутация: 0
По умолчанию Re: Отправляется 2 раза форма

Код:
$(document).ready(function(){
после удаления,стало нормально
marceting вне форума
 
Ответить с цитированием Вверх
Старый 18.06.2012, 09:55   #4
Alan2006
Постоялец
 
Пол:Мужской
Регистрация: 02.07.2009
Сообщений: 393
Репутация: 79
По умолчанию Re: Отправляется 2 раза форма

Цитата:
Сообщение от marceting Посмотреть сообщение
Код:
$(document).ready(function(){
после удаления,стало нормально

А вот это зря. В зависимости от браузера/платформы могут начаться косяки... Хотя как знаешь....
__________________
Каждый человек, которому вы ответили на форуме "гугл в помощь" - потенциальный "возвращенец" в винды. (ц)
Alan2006 вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Windows не грузится с первого раза eutanatos Microsoft Windows 20 16.05.2013 15:25
Что отправляется на urs.microsoft.com AbayKa Скорая помощь 1 15.01.2009 17:28
Почта не отправляется evgenn Скорая помощь 8 18.07.2008 06:51
Компьютер включается не с первого раза. Лока Архив 11 09.04.2008 02:17

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 15:02. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.14458 секунды с 11 запросами