2013-12-05 1 views
-1

Я нобее и все еще застрял в этой проблеме после нескольких часов поиска, проб и ошибок. Любая помощь будет очень признательна, поскольку я полностью исключаю идеи. Спасибо.если инструкция отключает мою функцию jQuery/button

У меня есть форма отправки комментария jquery, которая отображает комментарий в прямом эфире, когда вы отправляете сообщение. Код работает отлично, пока я не добавлю «if statement» в файл «include» php, необходимый для моей кнопки удаления, в эхом существующих комментариях. Когда я использую оператор if, кнопка больше не работает, запуская пост jquery в режиме реального времени на странице.

Это проблематично, если утверждение в включают скрипт:

if(loggedin() && $d['user_id'] == $_SESSION['user_id']){ $deletebutton = '<a href="#" id="'.$d['id'].'" class="delete">x</a>';}; 

Это часть из включать скрипт (comment.class.php), где расположен проблематичным, если заявление:

class Comment 

{

private $data = array(); 

public function __construct($row) 
{ 
    /* 
    / The constructor 
    */ 

    $this->data = $row; 
} 

public function markup() 
{ 
    /* 
    / This method outputs the XHTML markup of the comment 
    */ 

    // Setting up an alias, so we don't have to write $this->data every time: 
    $d = &$this->data; 

    //$link_open = ''; 
    //$link_close = ''; 

    //if($d['url']){ 

     // If the person has entered a URL when adding a comment, 
     // define opening and closing hyperlink tags 

     //$link_open = '<a href="'.$d['url'].'">'; 
     //$link_close = '</a>'; 
    //} 

    // Converting the time to a UNIX timestamp: 
    $d['dt'] = strtotime($d['dt']); 

    // Needed for the default gravatar image: 
    // original code for avatar: 
    //'.$link_open.' 
    //<img src="http://www.gravatar.com/avatar/'.md5($d['email']).'?size=50&amp;default='.urlencode($url).'" /> 
    //'.$link_close.' 

    //$url = 'http://'.dirname($_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]).'/img/default_avatar.gif'; 


    if(loggedin() && $d['user_id'] == $_SESSION['user_id']){ $deletebutton = '<a href="#" id="'.$d['id'].'" class="delete">x</a>';}; 


    return ' 

     <div id="comment"> 
      <div class="avatar"> 
       <a href="http://www.mywebsite.com/users/view.php?pid='.$d['user_id'].'" alt"User Link" title="User Link"><img src="http://www.mywebsite.com/users/avatar/'.$d['user_id'].'.jpg" /></a> 
      </div> 

      <div class="name"><a href="http://www.mywebsite.com/users/view.php?pid='.$d['user_id'].'" alt"User Link" title="User Link">'.$d['name'].'</a></div> 
      <div class="date" title="Added at '.date('H:i \o\n d M Y',$d['dt']).'">'.date('d M Y',$d['dt']).'</div> 
      <p class="commentText">'.$d['body'].'</p> 
      '.$deletebutton.' 
     </div> 
    '; 
} 

Это главная страница формы и вторили комментарии треска е с включают заявление для файла comment.class.php:

<?php if(loggedin()){echo ' 
      <div id="addCommentContainer"> 
      <form id="addCommentForm" method="post" action=""> 
       <div> 
        <img src="http://www.mywebsite.com/images/avatar.jpg" class="avatar" /> 
        <p class="commentAdd">Add your comment or review:</p> 
        <!-- <input type="text" name="link" id="link" /> --> 
        <textarea name="body" id="body" type="message" ></textarea> 
        <input type="image" id="submit" value="" src="http://www.mywebsite.com/images/commentsubmit.png" class="commentSubmit" /> 
        <input type="hidden" name="name" id="name" value="'.$_SESSION['first'].'"/> 
        <input type="hidden" name="user_id" id="user_id" value="'.$_SESSION['user_id'].'" /> 
       </div> 
      </form> 
     </div>';} ?>  


     <?php 
     /* 
     / Output the comments one by one: 
     */ 
     foreach($comments as $c){ 

      echo $c->markup(); 
     } 

     ?> 

Это мой JS скрипт для функции:

$(document).ready(function(){ 
/* The following code is executed once the DOM is loaded */ 

/* This flag will prevent multiple comment submits: */ 
var working = false; 

/* Listening for the submit event of the form: */ 
$('#addCommentForm').submit(function(e){ 

    e.preventDefault(); 
    if(working) return false; 

    working = true; 
    $('#submit').val('Working..'); 
    $('span.error').remove(); 

    /* Sending the form fileds to submit.php: */ 
    $.post('submit.php',$(this).serialize(),function(msg){ 

     working = false; 
     $('#submit').val('Submit'); 

     if(msg.status){ 

      /* 
      / If the insert was successful, add the comment 
      / below the last one on the page with a slideDown effect 
      /*/ 

      $(msg.html).hide().insertBefore('#addCommentContainer').slideDown(); 
      $('#body').val(''); 
     } 
     else { 

      /* 
      / If there were errors, loop through the 
      / msg.errors object and display them on the page 
      /*/ 

      $.each(msg.errors,function(k,v){ 
       $('label[for='+k+']').append('<span class="error">'+v+'</span>'); 
      }); 
     } 
    },'json'); 

}); 

});

+0

Так что же происходит не так? Ошибки? Плохая разметка? – Pointy

+0

if (loggedin() && $ d ['user_id'] == $ _SESSION ['user_id']) == FALSE, параметр $ varButton никогда не установлен. перед этим попробуйте $ deletebutton = ''; так что это никогда не определено – Bene

+0

Эффект jQuery слайда размещения комманды не работает, когда я использую оператор if. Тем не менее он по-прежнему относится к базе данных. Кнопка просто не визуально работает. – Jason

ответ

0

Я выяснил эту проблему. Часть loggedin() оператора if препятствовала правильной работе jquery. Я просто взял его, и он работает.

if($d['user_id'] == $_SESSION['user_id']){ return 'content here';} 
Смежные вопросы