0

挿入の値を渡し、+ 1 を追加していますが、成功したと思いました: 値が既に存在することをチェックが返した場合、function(html) は実行されません (PHP に既に存在することをエコーし​​ます)。挿入が起こらなくても成功が実行されるのはなぜですか?

挿入が発生した場合にのみ AJAX を実行するにはどうすればよいですか (値がまだ存在しない場合)

JQUERY AJAX

$(function addThumbs() {
    $('.vote-up').bind('click', function() {
        // 'this' is a DOM element
        // wrap 'this' in a jQuery object
        var img = $(this);
        // now we have the full jQuery API at our disposal
        var user_id = $('#user_id').val();
        var thumbsElem = img.closest(".thumbs");
        var review_id = thumbsElem.find("#review_id").val();
        var score = thumbsElem.find("#pluses").html();
        var scoreupdated = parseInt(score) + 1;
        if (review_id == 1) 
        { alert('...'); }
        else
        {
            $("#flash").show();
            $("#flash").fadeIn(400).html('<img src="ajax-loader.gif" />Loading Comment...');
            $.ajax({
                type: "POST",
                url: "ajax-thumbsup.php",
                data:{  
                    "user_id" : user_id, 
                    "review_id" : review_id       //we are passing the name value in URL
                },
                cache: false,
                success: function(html)
                {
                    img.attr('src', 'img/upgreen.png');
                    thumbsElem.find("#pluses").html(scoreupdated);
                }
            });
        }
        return false;
    });
});

PHP

<?php
$user_id = $_REQUEST['user_id'];
$review_id = $_REQUEST['review_id'];

require('inc/db.php');
$plusesfind = "SELECT * FROM reviews_likes WHERE review_id = :review_id AND user_id = :user_id";
$plusesfind = $conn->prepare($plusesfind);
$plusesfind->execute(array(':review_id' => $review_id, ':user_id' => $user_id));
if(!$pluses = $plusesfind->fetch()) :
    $con = mysql_connect("localhost","root","");

    mysql_select_db("mytvbox", $con);
    $sql = 'INSERT INTO reviews_likes (review_id, user_id, plus, minus) VALUES (' . $review_id .', ' . $user_id .', ' . 1 .' , ' . 0 .')';

    if (!mysql_query($sql,$con))
    {
        die('Error: ' . mysql_error());
    }
    else{
        echo "success";
    }

    mysql_close($con);
else :

    echo "it's already there";
endif ;
?>
4

3 に答える 3

1

これを行うことができます(成功したクエリでエコーsuccessしているため)-

success: function(html){
    if(html === "success"){
       img.attr('src', 'img/upgreen.png');
       thumbsElem.find("#pluses").html(scoreupdated);
    }
}
于 2013-05-22T09:30:28.337 に答える
1

挿入が成功した場合に戻るのでsuccess、成功コールバックでその値を確認できます

$.ajax({
    type: "POST",
    url: "ajax-thumbsup.php",
    data:{  
        "user_id" : user_id, 
        "review_id" : review_id       //we are passing the name value in URL
    },
    cache: false,
    success: function(html)
    {
        if(html == 'success'){
            img.attr('src', 'img/upgreen.png');
            thumbsElem.find("#pluses").html(scoreupdated);
        }
    }
});
于 2013-05-22T09:30:35.387 に答える