0

我需要在不刷新页面的情况下执行以下代码...此代码已经包含 ajax 但是在不刷新页面的情况下执行它在哪里出错...?.vote 类附加到我的 index.php 文件中的锚点,如果可能的话,我需要这一切在单击锚点时仍然有效。将其重新编码以在单击按钮时执行并不理想。

$(".vote").click(function() {
    var id = $(this).attr("id");
    var name = $(this).attr("name");
    var eData = $(this).attr("data-options");
    var dataString = 'id='+ id + '&' + eData ;
    var parent = $(this);

    if(name=='up')
    {
       $(this).fadeIn(200).html('');
       $.ajax({
          type: "POST",
          url: "up.php",
          data: dataString,
          cache: false,
          success: function(html){
             parent.html(html);
          }
       });
    }
    else
    {
       $(this).fadeIn(200).html('');
       $.ajax({
          type: "POST",
          url: "down.php",
          data: dataString,
          cache: false,
          success: function(html){
             parent.html(html);
          }
       });
    }
});

这是我的 index.php 中的 html

<div id="main">
<div id="left">
<span class='up'><a href="" class="vote" name="up" data-options="key1=<?php echo $mes_id1;?>&key2=<?php echo $mes_id2;?>"><img src="up.png" alt="Down" /></a></span><br />
<?php echo $totalvotes1; ?><br />
</div>
<div id="message">
    <?php echo $message1; ?>
</div>
<div class="clearfix"></div>
 </div>
<div id="main">
<div id="right">
<br />
<?php echo $totalvotes2; ?><br />
<span class='down'><a href="" class="vote" name="down" data-options="key1=<?php echo $mes_id1;?>&key2=<?php echo $mes_id2;?>"><img src="down.png" alt="Down" /></a></span>
</div>
<div id="message">
    <?php echo $message2; ?>
</div>
<div class="clearfix"></div>
</div>
4

1 回答 1

1

您需要将代码用 括起来$(document).ready(function() {});,或者将代码粘贴在<body>标签的末尾。就个人而言,我没有让浏览器在 DOM 加载之前解析同步 javascript(在本<head>节中),而是将其粘贴到最后。这也是 Bootstrap 推荐的。

如果没有加载 DOM,就没有为 jQuery 创建用于注册事件的元素,因此您的代码在被解析后实际上就坐在那里什么都不做。

除此之外,该.click()功能在点击时执行。它绑定到什么元素并不重要。如果它是可点击的,它是可执行的。

还要正确回答您的问题:<a href="">将刷新页面。你想用
<a href="#">. 但是,这将使您跳到页面顶部。您也可以定义 a<label>并改为使用#labelname来避免这种情况。或者根本不使用href。这不是必需的。

此外,将变量回显到 HTML 中的一个小技巧是使用<?= $var ?>

于 2013-02-18T23:59:02.450 回答