0

我正在将表单加载到页面和 div 中,如下所示:

<script type="text/javascript">
$('#comments').load('/pages/includes/comments.php', { user:"<?=$user?>", id:"<?=$id?>"
});
</script>

该页面加载正常,系统中的任何评论都显示,但是当我尝试添加新评论时它根本不起作用,下面的comments.php(如果我'包含'文件而不是ajax它可以正常工作顺便说一句):

require '/home/php_/lib/dbconnect.inc';

$comments_id = mysql_real_escape_string($_POST['comments_id']);
$comments = mysql_real_escape_string($_POST['comments']);
$id = mysql_real_escape_string($_POST['id']);

/*******************************************************/
/****************** add item
/*******************************************************/

if ($_POST[additem] == '1'){ // AA

    $additem = mysql_query("
    insert into comments (
    id,
    user_id,
    comments
     )
    VALUES (
    '$id',
    '$user',
    '$comments'
    )",$db);

    if(!$additem) { echo "input error ".mysql_error(); exit; } // debug

} // close AA

/*******************************************************/
/****************** end add item
/*******************************************************/


$coms = mysql_query("select * from comments where id = '$id';",$db);
if(!$coms) { echo "coms error ".mysql_error(); exit; } // debug

if (mysql_num_rows($coms)>0){ // 55

    while($databack44 = mysql_fetch_array($coms)){ // 55

    echo '<div style="width:100%; float:left;">'.$databack44[comments].'</div>';

        } 

        } // 55

        else {  

        echo 'No Comments';

        }

?>      

<form method="post" action="#">
    <textarea name="comments"></textarea>
    <input type="submit" value="Add" class="button green">
    <input type="hidden" name="id" value="<?=$id?>">
    <input type="hidden" name="additem" value="1">
    </form>
4

2 回答 2

2

那是因为一旦您提交了新评论,它将充当表单提交,并且不像 AJAX 那样工作。

最简单的方法是使用单独的 php 文件来保存评论和jquery 表单插件将其添加到comment.php<HEAD>中的标记

<HEAD>
<script src="http://malsup.github.com/jquery.form.js"></script> 
<script> 
        // wait for the DOM to be loaded 
        $(document).ready(function() { 
            // bind 'myForm' and provide a simple callback function 
            $('#myForm').ajaxForm(function() { 
                location.reload(); 
            }); 
        }); 
    </script> 
</HEAD>
<?php 
$coms = mysql_query("select * from comments where id = '$id';",$db);
if(!$coms) { echo "coms error ".mysql_error(); exit; } // debug

if (mysql_num_rows($coms)>0){ // 55

    while($databack44 = mysql_fetch_array($coms)){ // 55

    echo '<div style="width:100%; float:left;">'.$databack44[comments].'</div>';

        } 

        } // 55

        else {  

        echo 'No Comments';

        }


?>
<form method="post" action="function.php" id="myForm">
    <textarea name="comments"></textarea>
    <input type="submit" value="Add" class="button green">
    <input type="hidden" name="id" value="<?=$id?>">
    <input type="hidden" name="additem" value="1">
    </form>

函数.php

if ($_POST[additem] == '1'){ // AA

    $additem = mysql_query("
    insert into comments (
    id,
    user_id,
    comments
     )
    VALUES (
    '$id',
    '$user',
    '$comments'
    )",$db);

    if(!$additem) { echo "input error ".mysql_error(); exit; } // debug

} // close AA

jquery 表单插件正在禁用标准表单提交功能,并将表单数据作为 ajax 变量发送到给定的表单操作 url

将数据发送到function.php后,comment.php将通过 location.reload() 重新加载。

现在你有新的评论希望这会有所帮助

于 2012-08-13T08:50:40.127 回答
0

嘿,达伦很高兴能帮助你...

好的,这是另一种方法。我们需要 3 页。

  1. 评论.php
  2. 函数.php
  3. 评论.js

评论.php

    <HEAD>
    <script>
            var id="<?php echo $_GET['id']?>"; 
            // wait for the DOM to be loaded 
            $(document).ready(function() { 
            //loading comments on page loading
              view_comment(id);
                }); 
            }); 
        </script> 
    </HEAD>

<div id="display_div"></div>
<form name="f1">
    <textarea name="comments" id="comments"></textarea>
    <input type="hidden" name="id" value="<?=$id?>">
    <input type="hidden" name="additem" value="1">
    <input type="button" value="Add" class="button green" onClick="javascript:add_comment(f1.id.value,f1.additem.value,f1.comments.value)">    
    </form>

函数.php

<?php
    //view comments
    if($_GET['action']=="view_comment"){
    $coms = mysql_query("select * from comments where id = '$id';",$db);
    if(!$coms) { echo "coms error ".mysql_error(); exit; } // debug

    if (mysql_num_rows($coms)>0){ // 55

        while($databack44 = mysql_fetch_array($coms)){ // 55

        echo '<div style="width:100%; float:left;">'.$databack44[comments].'</div>';

            } 

            } // 55

            else {  

            echo 'No Comments';

            }


    }

    //add comments
    if($_POST['additem']=="1"){
$id=$_POST['id'];
$comments=$_POST['comment'];
     $additem = mysql_query("
        insert into comments (
        id,
        user_id,
        comments
         )
        VALUES (
        '$id',
        '$user',
        '$comments'
        )",$db);

        if(!$additem) { echo "input error ".mysql_error(); exit; }

    }
?>

评论.js

function view_comment(id){
$("#display_div").empty().html('<img src="pathtoaloadingimage" />');
   $("#display_div").load("pathtoyourfile/function.php?action=view_comment&id="+id).fadeOut('slow').hide().fadeIn('slow');

}

function add_comment(id,additem,comment){
    if(comment!=""){
 $("#display_div").empty().html('<img src="pathtoaloadingimage" />');
    $.ajax({
  type: "POST",
  url: "http://pathtoyourfile/function.php",
  data: "id="+id+"&additem="+additem+"&comment="+comment});
  $("#comments").val('');
  view_comment(id); 
    }else{
         alert('Comment is empty..! Please write something to comment.');
        return false; 
        }


}

现在我们开始了,您有一个 AJAX 评论页面

注意:-将加载图像添加到您的站点并使用该路径,pathtoaloadingimage然后它将使您的站点看起来更漂亮。因此,一旦您提交了新评论,加载图像将显示并在同一点显示您的新评论后。不再重新加载

希望这可以帮助你

于 2012-08-14T03:16:35.043 回答