2013-04-28 3 views
0

mysql에서 비동기 적으로 데이터를로드하려고합니다. 먼저, 페이지로드에 나는 페이지에 여러 된 div를 추가동적으로 요소를 선택했습니다.

$(document).ready(function(){ 
     // Layout 
     var main = $("#main-div"); 
     for(var i = 0; i < array.length; ++i) { 
      main.append("<div class='container'><a href=\"blah\">"+array[i]+"</a><div class='button-container'><span id='playcount_"+array[i]+"' class='playcount' style='margin-right:5%'>nope</span></div></div>"); 
     } 
     // Get info for each sound in array 
     for(var i = 0; i < array.length; ++i) { 
      $.post("script/php_getinfo.php", { "file": array[i] }, updatePlaycount, "json"); 
     } 
}); 

container 된 div는 div의가 추가 후, POST가 항목별로 구성되어 등 playcount_A의 ID, playcount_B, 함께 span로 추가 성공하면 updatePlaycount가 호출됩니다.

function updatePlaycount(data) { 
    $('#playcount_'+data.name).text(data.playcount); 
} 

기능이 제대로 (예를 A1 용) data.namedata.playcount 필드를 얻을 수 있지만, 어떤 이유로 jQuery를이 #playcount_A을 찾을 수 없습니다 :

updatePlaycount는 요소를 선택하고 span에 텍스트를 삽입하려고! div를 추가하는 데 아무런 부하가 없기 때문에 분명히 이미 추가되었습니다. ...

+2

'array.length'를 호출하고 있는데 코드에서 아무 것도 선언되지 않았습니까? –

+0

죄송합니다. 여기에 게시 할 코드가 너무 많습니다. 하지만 내가 말했듯이, 사업부는 제대로 배치됩니다. 배열은 'A, B, C'와 같은 문자열 일뿐입니다. – Snailer

답변

2

그것은 나를 위해 작동합니다. 데모 코드처럼 보이지 않습니다. 당신이 (큰) 라이브러리가있는 경우에 당신이 너무

DEMO

$(document).ready(function() { 
    // Layout 
    var main = $("#main-div"), 
     array = ["A", "B", "C"], 
     updatePlaycount = function (data) { 
       console.log(data); 
       var $playct = $('#playcount_' + data.name); 
       console.log($playct); 
       $playct.text(data.playcount); 
      } 

    function ajaxI(i,arr){ 
     var J= JSON.stringify({ 
        "name": arr[i], 
         "playcount": (i+1)+'' 
       }); 
     console.log(J) 
    $.ajax({ 
      type : "POST", 
      dataType: "json", 
      url: "/echo/json/", 
      data: { 
       json: J, 
       delay: 3 
       }, 
      success: updatePlaycount 
     }); 
    } 

    for (var i = 0; i < array.length; ++i) { 
     main.append("<div class='container'><a href=\"blah\">" + array[i] + "</a><div class='button-container'><span id='playcount_" + array[i] + "' class='playcount' style='margin-right:5%'>nope</span></div></div>"); 
    } // end for 

    // Get info for each sound in array 
    for (var j = 0; j < array.length; ++j) { 
     ajaxI(j,array); 
    } // end for 
}); // end ready 

할 ... J 지불 수표를 보내 주시기 바랍니다 것을 할 수 있습니다 포함 할 수 있도록 바이올린는 방법으로 아약스를 사용할 수 있습니다/K

+0

최대한 빨리 확인해 보겠습니다! – Snailer

+0

그리고 오른쪽으로 도움이 된 모든 것을 투표하십시오. : D – gillyspy

+0

물론! 오늘 일을 끝내고 나서 시간 있습니다. – Snailer

관련 문제