0

新しい JavaScript で編集

「これが好き」という機能を作ろうとしていますが、小さな問題があります。

私はこの小さなjavascriptを使用しています

function coolIt(designid) {
   $.post('cool.php', {designid:designid}, function(data) {
      //alert(data);
      $('#cool_'+designid).text(data);
   });
}

そして、「いいね」ボタンがあるこのHTML

<span class="like"><a href="javascript:void(0)" onclick="coolIt(\''. $row["id"] .'\');"></a><span id="cool_'.$row["id"].'">('. $row["cools"] .')</span></span>

cool.php は次のように実行されます。

 function UpdateCool($design_id) {
    $fields_up = array("cools" => 'cools + 1');
    $fields_down = array("cools" => 'cools - 1');

    $sql = SQLHandling::updateSQL('tdic_designs', 'id = '. $design_id .'', $fields_up);            

    SQLHandling::SQLquery($sql);
}

そしてそれは完全に機能します。これは、cools フィールドを 1 つの増加する値で更新します。

JavaScriptを実行するalert(data)と、何も返されず、#cool_1 スパン要素が消えます。

私が間違っているかもしれない何か考えはありますか?

HTML出力:

<script type="text/javascript">
function coolIt(designid) {
    $.post('cool.php', {designid:designid}, function(data) {
       alert(data);
       $('#cool_'+designid).text(data);
    });
}
</script>

</head>
<body>

<div id="allContainer">
    <div id="topArea">
        <div id="topNaviArea">
            <ul id="navi">
                <li class="home"><a href="/testen/">Home</a></li>
                <li class="categories"><a href="categories.php" title="Browse categories">Categories</a></li>
                <li class="about"><a href="about.php">About</a></li>
                <li class="faq"><a href="faq.php">FAQ</a></li>
                <li class="submit"><a href="submit.php" title="Submit a website">Submit</a></li>
                <li class="contact"><a href="contact.php" title="Submit a website">Contact</a></li>
            </ul>
        </div>
    </div>
    <div id="contentBox">
    <div id="login"><a href="#">Login</a> // <a href="#">Register</a></div>             <div id="mainContent">
                    <h1>// <a href="/testen/">Home</a> // <a href="categories.php">Categories</a> // HTML / CSS</h1>            

                 <div id="catMenu">

                    <ul>
                        <li><a href="categories.php?cat_id=5" title="View all designs in 3D">3D</a></li><li><a href="categories.php?cat_id=3" title="View all designs in Graphic">Graphic</a></li><li><a href="categories.php?cat_id=1" title="View all designs in HTML / CSS">HTML / CSS</a></li><li><a href="categories.php?cat_id=4" title="View all designs in Paintings">Paintings</a></li><li><a href="categories.php?cat_id=2" title="View all designs in Photography">Photography</a></li><li><a href="categories.php?cat_id=6" title="View all designs in Portals">Portals</a></li><li><a href="categories.php?cat_id=7" title="View all designs in Webshops">Webshops</a></li>
                    </ul>
                    <h2>1 designs<br />in this category</h2>
                </div>

                <div id="rightContentBox">                          
                    <ul id="displays">
                        <li class="displayWindow"><div class="dpwImage"><figure><a href="#"><img src="/testen/designs/thatdesigniscool.jpg" width="280" height="175" alt="That Design Is Cool" target="_blank"></a></figure></div><div class="dpwBox"><div class="dpwLeft"><span class="title"><a href="designinfo.php?designid=1">That Design Is Cool</a></span><span class="comments"><a href="designinfo.php?designid=1">Comments (1)</a></span></div><div class="dpwRight"><span class="like"><a href="javascript:void(0)" onclick="coolIt('1');"></a><span id="cool_1">(29)</span></span></div></div> </li>
                    </ul>
                </div>

        </div>
</div>
</div>
4

2 に答える 2

1

div の内容全体をサーバーの応答だけに置き換えていると思います。なぜ追加しないのですか?

$('.likeIt').livequery("click",function(e){
    var designid =  $(this).attr('id').replace('design_id-','');
    $.post('cool.php?design_id='+designid, {}, function(response){
        $('#cool_'+designid).html($('#cool_'+designid).html() + response); // See if this works!
    });
});

これが役立つかどうかを確認してください!:)

于 2012-06-07T12:14:32.380 に答える
0

cool.php を次のように編集して解決しました。

<?php
session_start();

ini_set("display_errors", 1);

define("INCLUDE_DIR", "includes/classes");

/* Autoload classes when used */
function __autoload($class_name) { include(INCLUDE_DIR.'/class.'. strtolower($class_name) . '.php'); } 

SQLHandling::SQLconnect();

if($_POST["designid"] != '') {
    $alreadyExist = mysql_num_rows(mysql_query('SELECT id FROM tdic_voted WHERE designid="'.(int)$_POST['designid'].'" AND ip="'.$_SERVER['REMOTE_ADDR'].'"'));

    if($alreadyExist == 0) {

     mysql_query(' UPDATE tdic_designs SET cools = cools+1 WHERE id="'.(int)$_POST['designid'].'"');
     $num = mysql_fetch_row(mysql_query(' SELECT cools FROM tdic_designs WHERE id="'.(int)$_POST['designid'].'" LIMIT 1'));
     echo $num[0];
     mysql_query(' INSERT INTO tdic_voted (designid, ip) VALUES ("'.(int)$_POST['designid'].'","'.$_SERVER['REMOTE_ADDR'].'")');

     } else{
        echo 'You already think this is a cool design!';
    }   
}
?>
于 2012-06-08T12:28:43.117 に答える