0

クリックするといくつかのデータを更新するAjax関数があります。変数を関数パラメーターとしてpostに送信します。一方、変数の配列を解析し、それぞれに関数を適用します。これが私のコードです:

function vote(user, picture){
  var data = {
    "user": user,
    "picture": picture
  };
  var url = 'vote_up.php';
  $.ajax({
    type: 'POST',
    url: url,
    data: data,
    async: true,
    dataType: 'json',
    success: function(response) {
      $('a#voteaza').replaceWith('<span style="color:#abb4c9; font-size: 15px;"> </span>');
      $('#changeNumber').html(parseInt($('#changeNumber').html(), 10)+1);
    }
  });
}

そしてPHP:

foreach($photos['data'] as $photo) {
  $a = end(explode( '/',$photo['source']));
  <a href="#" id="voteaza" name = "<?php echo $a; ?>" style="color:#abb4c9; font-size: 15px; font-weight: bold; " onclick="vote('<?php echo $user ?>', '<?php echo $a ?>');">Voteaza</a> <br /> <span style="color:#abb4c9; font-size: 13px;" id="changeNumber"> <?php echo no_votes($a); ?> Voturi </span>

問題は、成功すると、jqueryが

$('a#voteaza').replaceWith('<span style="color:#abb4c9; font-size: 15px;"> Vote! </span>');
$('#changeNumber').html(parseInt($('#changeNumber').html(), 10)+1);

すべての「voteaza」IDを「Vote」文字列に置き換え、すべての「changenumber」idフィールドをインクリメントします。ただし、success関数は、現在Ajaxで更新されている<a name要素に対してのみ実行する必要があります。

それを行う方法はありますか?

ありがとう!

4

1 に答える 1

1

ID はページ内で一意である必要があります。YOU CAN NOT GIVE SAME ID TWICE IN PAGE : foreach で id を呼び出しており、すべて同じ値を持っていることがわかります。

これを試してみてください。これが機能するかどうかはわかりません。このように動作させることができます。

vote(this,'<?php echo $user ?>', '<?php echo $a ?>')

function vote(test,user, picture){

$(test).replaceWith('<span style="color:#abb4c9; font-size: 15px;"> Vote! </span>');
于 2013-02-08T06:42:49.497 に答える