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がロードされる前に(<head>セクションで)ブラウザーに同期JavaScriptを解析させる代わりに、最後の方に貼り付けます。これは、Bootstrapが推奨するものでもあります。

DOMがロードされていない場合、jQueryがイベントを登録するために作成された要素がないため、コードは文字通りそこにあり、解析された後は何もしません。

それとは別に、.click()関数はクリックで実行されます。バインドされている要素は関係ありません。クリック可能であれば、実行可能です。

また、質問に正しく答えるために:<a href="">ページを更新します。使用したい
<a href="#">。ただし、これにより、ページの上部にジャンプします。これを回避するために、を定義して代わりに<label>使用することもできます。#labelnameまたは、まったく使用hrefしないでください。必要ありません。

また、変数をHTMLにエコーするためのちょっとしたコツは<?= $var ?>

于 2013-02-18T23:59:02.450 に答える