2016-09-01 4 views
0

私は少し問題があり、私は成功せずに解決しようとしました。皆さんが私を助けてくれることを願っています。jqueryとajaxを使用してボタンを別のものに置き換えてください

ボタンをクリックすると、Ajax関数が呼び出され、Ajaxの応答が返されます。

これまでのHTMLのための私のコード:

<div class="btn-group"> 
<button id="button1" class="btn btn-white btn-xs" onclick="like(83,1)"> 
<i class="fa fa-heart-o"></i> 
J'aime ! 
</button> 
</div> 

とjqueryの一部:

function like(id, t) { 

    $.ajax({ 
     type: "GET", 
     url: "ajax/likes.php?postID=" + id + "&likeID=" + t, 
     dataType: 'html', 
     success: function(data) { 
      $("#button" + t).replaceWith(data); 
     } 

    }); 
} 

Ajaxの機能の動作を呼び出し、私はから必要なHTMLとの反応を見ることができ&をクリック開発者向けのコンソールではなく、元のコンソールに置き換えられることはありません。

応答は以下のようになります。

<button id='button1' class='btn btn-white btn-xs 1' onclick='like(83,1)'> 
<i class='fa fa-heart'></i> 
J'aime plus   
</button> 

ありがとう!

+1

htmlからajax.dataTypeを変更してみます(データを)CONSOLE.LOGし、正しい応答を取得している確認していただけますか?正しいものを取得している場合は、replacewithコード内で$ .parseHTML(データ)を試すことができます。 – vijayP

+0

ありがとうvijayP、$ .parseHTML(データ)は私のために魅力的に働いた! – Anass

+1

すばらしい@Anass thats ...! – vijayP

答えて

0

onclick属性を使用する代わりに、jQueryのclick()を使用することをお勧めします。

はおそらく、あなたは

var ids; //set equal to number of id's in total 

for (let i = 0; i < ids; i++) { 
    $("button" + i).click({id: 83}, function() { 
     callback(i, event.data.id); 
    } 
} 
... 
function callback(i,t){ 
    return function(){ 
    $.ajax({ 
      type: "GET", 
      url: "ajax/likes.php?postID=" + t + "&likeID=" + i, 
      dataType: 'html', 
      success: function(data) { 
      $("#button" + i).replaceWith(data); 
      } 
     }); 
    } 
} 

編集、次のような構造をしてみてください可能性があります()をクリックしてのparamsを渡す方法があります。はるかに詳細な説明はjQuery's .click - pass parameters to user functionを参照してください。

+0

ありがとう、しかし、私は異なるIDで生成された多くのボタンを持っているので、私はjQueryのクリック()を使用することはできませんし、私はクリックして、適切なコードで置き換える知っている関数にパラメータを渡す必要があります – Anass

+0

私の更新された答え法案に合う? –

+0

ボタンID(id = "button1")は、ボタン2ボタン3ボタン4のように異なる数字を得ることができます。ありがとう – Anass

0

同じコード

ajax.success内の変数tの値を確認してください。

var buttonsPlus = ["<button id='button1' class='btn btn-white btn-xs' onclick='like(83,1)'>\n\r<i class='fa fa-heart'></i> \nJ'aime plus\n</button>","<button id='button2' class='btn btn-white btn-xs' onclick='like(83,2)'><i class='fa fa-heart'></i> David plus</button>"]; 
 

 
function like(likes, index){ 
 
    // simulate ajax call 
 
    setTimeout(function(){ 
 
    $('#button'+index).replaceWith(buttonsPlus[index-1]); 
 
    }, 1000); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="btn-group"> 
 
<button id="button1" class="btn btn-white btn-xs" onclick="like(83,1)"> 
 
<i class="fa fa-heart-o"></i> 
 
J'aime ! 
 
</button> 
 
<button id="button2" class="btn btn-white btn-xs" onclick="like(83,2)"> 
 
<i class="fa fa-heart-o"></i> 
 
David ! 
 
</button> 
 
</div>

EDIT#2:

text/plain

関連する問題