2014-09-20 48 views
1

我创建像我的网站和不同的按钮,在我的本地服务器我使用seprate文件它工作正常,但是当我安装在我的网站上时,它不是好好工作。面对就像不像按钮在php中,使用ajax的mysql调用

我为抓取使用从地址栏这个代码的一些信息

<?php 
    error_reporting (0); 
    include "includes/session.php"; 

    include 'database/db.php'; 

    extract($_REQUEST);    
    if(isset($_GET["i"])) 
    { 
    $pid=($_GET['p']); 
    $lid=($_GET['i']); 
    } 
    ?> 

    <?php 
    $likquery = mysql_query("select * from likes where userid=$id and postid=$lid"); 
    if(mysql_num_rows($likquery)==1){ 

    ?> 
     <a class="unlike" id="<?php echo $lid ?>">UnLike</a>&nbsp;<span class="like_update" id="<?php echo $lid ?>"></span> 

    <?php }else{?> 

     <a class="like" id="<?php echo $lid ?>">Like</a> 



     <?php 
    }?> 

在此之后我使用脚本

<script src="js/jquery-1.8.3.min.js" type="text/javascript"></script> 
    <script> 
    $(document).ready(function(){ 

    $('body').on('click','.like',function(){ 


    var postId = $(this).attr('id'); 

    var postData = 'postid='+postId+'&uid=<?php echo $id ?>'; 

    $.ajax({ 

     type: "POST", 
     url: "like_notes", 
     data: postData, 
     cache: false, 
     success: function(){ 

      $('#'+postId).text('UnLike').addClass('unlike').removeClass('like'); 
     } 

    }); 

    }) 



    $('body').on('click','.unlike',function(){ 

    var postId = $(this).attr('id'); 

    var postData = 'postid='+postId+'&uid=<?php echo $id ?>'; 

    $.ajax({ 

     type: "POST", 
     url: "likeun_notes", 
     data: postData, 
     cache: false, 
     success: function(){ 

      $('#'+postId).text('Like').addClass('like').removeClass('unlike'); 
     } 

    }); 

    }) 

    }); 

    </script> 

而我会没有得到任何回应,但是当我使用

<script src="js/jquery-1.8.3.min.js" type="text/javascript"></script> 
<script> 
$(document).ready(function(){ 

$(".like").click(function(){ 

    var postId = $(this).attr('id'); 

    var postData = 'postid='+postId+'&uid=<?php echo $id ?>'; 

    $.ajax({ 

     type: "POST", 
     url: "like_notes", 
     data: postData, 
     cache: false, 
     success: function(){ 

      $('#'+postId).text('UnLike').addClass('unlike').removeClass('like'); 
     } 

    }); 

}) 


$(".unlike").click(function(){ 

    var postId = $(this).attr('id'); 

    var postData = 'postid='+postId+'&uid=<?php echo $id ?>'; 

    $.ajax({ 

     type: "POST", 
     url: "likeun_notes", 
     data: postData, 
     cache: false, 
     success: function(){ 

      $('#'+postId).text('Like').addClass('like').removeClass('unlike'); 
     } 

    }); 

}) 

}); 

</script> 

only once it is changing the value 
+1

你有变量'$ pid'和'$ lid',但是你用'$ id'和'$ lid'在查询中。错字? – ArVan 2014-09-20 10:24:37

+0

$ pid我使用另一个功能.... – Anuveester 2014-09-20 10:25:40

+1

好吧,那么我猜'$ id'被定义在其他地方? – ArVan 2014-09-20 10:29:21

回答

0

好的,第二个版本只能运行一次,因为在开始时,事件在按钮上,th通过改变它的类和文本来重新渲染按钮,这样事件就会被解除绑定。

与第1版相同。 jquery说:事件处理程序只绑定到当前选定的元素;当代码调用.on()时,它们必须存在于页面上。如果将新的HTML注入到页面中,请在将新的HTML放入页面后选择元素并附加事件处理程序。

因此,在更改按钮后重新绑定事件。

我建议是这样的:

function bindEvents() { 
    $('.like').off().on('click', function(){ 
     var postId = $(this).attr('id'); 

     var postData = 'postid='+postId+'&uid=' + <?php echo $id ?>; 

     $.ajax({ 

      type: "POST", 
      url: "like_notes", 
      data: postData, 
      cache: false, 
      success: function(){ 

      $('#'+postId).text('UnLike').addClass('unlike').removeClass('like'); 
      //rebind events here 
      bindEvents(); 
     } 
    }); 
    $('.unlike').off().on('click', function(){ 
     var postId = $(this).attr('id'); 

     var postData = 'postid='+postId+'&uid=' + <?php echo $id ?>; 

     $.ajax({ 

      type: "POST", 
      url: "likeun_notes", 
      data: postData, 
      cache: false, 
      success: function(){ 

      $('#'+postId).text('Like').addClass('like').removeClass('unlike'); 
      //rebind events here 
      bindEvents(); 
     } 
    }); 
} 


$(document).ready(function(){ 
    bindEvents(); 
}); 

还要注意,在var postData = 'postid='+postId+'&uid=<?php echo $id ?>';代码,PHP的一部分将不被视为PHP。它将只是一个字符串。因此,替换为下面的那部分,假定代码位于一个PHP文件中:

var postData = 'postid='+postId+'&uid=' + <?php echo $id ?>; 
+0

谢谢你,但它不工作..... – Anuveester 2014-09-20 11:09:53

+1

前端部分工作,因为它应该:http://jsfiddle.net/ar99tetm/ 所以这是在后端的东西。请求是否被发送?什么是回应? – ArVan 2014-09-20 11:13:22

+1

顺便说一句'var postData ='postid ='+ postId +'&uid = <?php echo $ id?>';'postid'确切地等于''&uid = <?php echo $ id?> ',我也修正了那部分。 – ArVan 2014-09-20 11:15:52