$ .ajax()有时候不会给出回应

时间:2015-06-24 12:26:27

标签: jquery ajax

我使用ajax()在我的网站上制作了“喜欢/不喜欢”系统。点击div,将其内容从like更改为dislike,并在其附近更新总喜欢的数量。

有时第一个AJAX调用(喜欢不喜欢)的工作方式是否完美,但总喜欢的数字却没有。有任何想法吗?是因为一次点击共有2个AJAX调用吗?它发生在20岁左右。

由于

这是两个跨度;

<span id='like' class='span_like'>Like</span>    
<span id='nlikes'></span>

这是两个$ .ajax()调用。第一个将内容从“喜欢”更改为“不喜欢”(或反之),并更新数据库中的“喜欢”。 第二个电话会计算总喜欢的号码,并在<span id='nlikes'></span>

中报告
$('#like').click(function(){  
    var call1 = $.ajax({  
                      url: 'relative_comments_likes_number+1.php',   
                      type: 'GET',  
                      data: {id : '".$loopCMR['id']."'},  
                      dataType: 'text'  
                    });  
                    call1.done(function(data){  
                    $('#like').text(data)}) 

    var call2 = $.ajax({  
                      url: 'comment_likes_number_add_drop.php',   
                      type: 'GET',  
                      data: {value : '".$loopCMR['id']."'},  
                      dataType: 'text'  
                    });  
                    call2.done(function(data){  
                    $('#nlikes').text(data)})  
    })  

......这些是两个php文件

第一个电话

<?php session_start();    
include("DB_connection.php");    

$id=$_GET['id'];  
$liked_q=mysql_query("SELECT * FROM comments_like WHERE    
liked_by='".$_SESSION['username']."' AND id='".$id."'");  
$response=mysql_num_rows($liked_q);  
if($response==0)  
{  
$query=mysql_query("INSERT  
INSERT INTO comments_like(id,liked_by,code)VALUES('".$id."',  
'".$_SESSION['username']."','".$_SESSION['v']."')");  
echo"Unlike";}  

if($response==1)  
{$query2=mysql_query("DELETE FROM comments_like WHERE  
liked_by='".$_SESSION['username']."' AND id='".$id."'");  
echo"Like";}  
?>  

第二个电话是......

<?php session_start();
include("DB_connection.php");
$id = $_REQUEST['value'];
$query = mysql_query("SELECT * FROM comments_like WHERE id='".$id."'");
$rows = mysql_num_rows($query);
if($rows == 0){
echo '';
}else{
echo " (".$rows.")";}
?>

所以......一切都很完美..但偶尔第二次调用不起作用......

1 个答案:

答案 0 :(得分:0)

不建议进行此类双重调用。而是这样做

var loopCMR = "<PHP echo $loopCMR['id']; ?>";    
$('#like').click(function () {
    var call1 = $.ajax({
        url: 'relative_comments_likes_number+1.php',
        type: 'GET',
        data: { id: loopCMR },
        dataType: 'text'
    }).done(function (data) {
        $('#like').text(data);
        var call2 = $.ajax({
            url: 'comment_likes_number_add_drop.php',
            type: 'GET',
            data: { value: loopCMR },
            dataType: 'text'
        }).done(function (data) {
            $('#nlikes').text(data)
        });
    });
});

或只有一个PHP返回两个值