2010-08-03 119 views
2

我想在一段时间内混淆jQuery和Ajax。如何构建Ajax评论系统?

对于我的第一个问题,我想创建一个输入框,输入我的评论,然后评论将出现在下面。没有页面刷新。我怎样才能做到这一点?

回答

2

基本的想法是,你将有一个客户端页面的textarea或输入。将.click附加到提交按钮,并且.click将通过.ajax调用服务器端脚本。

客户端:

<script type="text/javascript"> 
    $(document).ready(
    $('#submit').click({ 
     $.ajax({ 
       type=POST, 
       data: "comment="+$("#comments").val(), 
       dataType: json, 
       url: 'somePage.php', 
       success: function(data) { 
        if(data.error){ 
         alert("server reported error"); 
        }else{ 

         $('#postedComments').append(data); 
        } 
       } 
       }); 


    }); 


}); 
</script> 
<div id="postedComments></div> 
<textarea id="comments"></textarea> 
<input type="submit" id="submit" value="Post Comment" /> 

服务器端:

<?php 
    if(isset($_POST['comments'])){ 
     //perform Database insert of value $_POST['comments'] 
     if(<database error>){ 
      echo json_encode(array('error'=>'-1')); 
     }else{ 
      echo json_encode(array('success'=>'1')); 
     } 
    } 
?> 

基本上当客户点击提交时,阿贾克斯上岗 “意见” 的服务器端脚本。该脚本然后处理请求并以json编码返回错误或成功报告,这就是ajax调用成功的方式,您可以确定服务器调用发生了什么。 Ajax成功并不成功,它只是表明服务器回应了,这就是为什么你可以编码一些消息发送回客户端脚本,以确定服务器是否回应错误或成功的消息。

+0

谢谢!如果我使用这个if ---- 有没有唯一的Ajax/JQuery的方式?我还没有学习PHP,所以我试图避免使用PHP。 – omnix 2010-08-03 12:28:06

+0

你可以单独使用jQuery来做到这一点,但是如果你关闭浏览器并开始一个新的会话,你的数据将不会持久。此外,当客户端A访问本网站并发布评论时,客户端B将看不到客户端A的评论,而客户端B的评论不会被客户端A看到。因此,您需要某种方式来保存数据,这就是为什么我要提供服务器端代码的原因。 仅仅对于jQuery的客户端来说,它将与发布ajax调用时的功能相同。简单做 $(“#submit”)。click(function(){$(“#postingComments”)。append($(“#comments”).val());}); – Chris 2010-08-03 12:48:18

+0

好的,谢谢克里斯,你是一个很大的帮助! – omnix 2010-08-03 12:53:36

0

您应该将post的输入框内容发送到服务器,并且append它对从服务器获得成功消息的评论。

+0

好吧我了解并查看了jQuery指南。我可以有更多的代码示例吗? – omnix 2010-08-03 12:18:50

+0

@kawoki看到我的评论下面的一些代码:-) – Chris 2010-08-03 12:26:15

0

我已经构建了一个类似于WordPress的jQuery驱动的ajax评论系统。创建/删除操作全部由ajax驱动。

我通过手动执行$ .post()操作来创建注释,$ .get()来删除注释。