私はjsonから解析されたデータを持っています。私はFacebookの友だち候補ボックスのようなボックスにデータを表示します。ユーザーが提案したユーザーのいずれかをクリックして、ajax経由でDBに追加するリクエストとその対応するボタンが消えたら、最後のもの(ボタンが消える)を除いてすべて正常に動作します。リストの最初のボタンが消えます。 、私はループ内でリスナー匿名関数を宣言しようとしたときイムは私がreaaly私のコードでそれを実装する方法を知っていることができなかった私は閉鎖と呼ばれるものに出くわした私の問題への解決策を探したがながら、別の問題が現れましたデータは、DBを複数回 に挿入されます(理由はそのループ内で)、私はajaxコールバックのクロージャループ
私のコードは、この
のように見える、それは質問を重複しているように見えるかもしれないが、私はちょうど私に私の内側の関数を宣言するために適切な場所を指している人が必要知っています$(document).ready(function() {
var suggest = new XMLHttpRequest();
suggest.onreadystatechange = function() {
if (suggest.readyState === 4 && suggest.status === 200) {
var susers = JSON.parse(suggest.responseText);
for (var i = 0; i < susers.length; i += 1) {
var sphoto = '<div class="col-md-4 text-left "> <div id="fimage">';
sphoto += '<img width="50" height="50" src="user/';
sphoto += susers[i].activation + '/' + susers[i].pic + '"> </div> </div>';
var sname = '<div id="fname">' + susers[i].name + '</div>';
// here is the form im targetting to pull informtion from
var hidden = '<form id="fform"><input id="fnameh" name="name" type="hidden" value="' + susers[i].name + '" >';
hidden += '<input name="id" type="hidden" value="' + susers[i].id + '" >';
var fbutton = '<button id="addfriend"class="btn btn-info btn-xs pull-right text-center" type="submit" >Follow <span class=" glyphicon glyphicon-plus" aria-hidden="true"></span> </button></form';
var display = document.getElementById('fsuggest');
display.innerHTML += '<div class="scroller"><div id="fspace" > <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>' + sphoto + sname + hidden + fbutton +'</div></div>'
$('#addfriend').live('click', function(arg) {
return function() {
arg.preventDefault();
var data = $('#fform').serialize();
$.ajax({
data: data,
type: "post",
url: "addnew.php",
success: function(data) {
//make the text area empty
$('#addfriend').css("display", "none");
console.log(data);
}
}); // end of $.ajax
}(i); // end of inner function
}); // end of click listner
} //end of for loop
}
};
suggest.open('GET', 'box.php');
suggest.send();
}); // end of JQUERY ready
PS:私は、データベースに彼の名前を取得いけないすべてのユーザーが,,ボックス内の最後の名前が挿入されます(ループ内latestname),,姓の+と第一ボタンでクリックしたときに – cisco
動作していないコードのスニペットを貼り付けてください。ボタンを隠すコードはどこにありますか? – brk
これは同じコードです。 – cisco