jQuery를 사용하여 루프에서 "GET"을 사용하여 서버에서 여러 결과를 얻습니다. 콜백에 고정 된 매개 변수로 루프 인덱스를 포함하고 싶지만 작동하지 않습니다. for 루프 내에서 클로저 - 루프 변수를 매개 변수로 사용하는 콜백
(나는 그것을 수행하는 방법에 대한 this article의 조언을 따랐다.)그러나, 나는 다시 호출에 들어갈 값은 내가 기대 완전하지 않다 - 오히려 각 루프 인덱스 값보다 항상 동일 인덱스의 종료 값으로.
즉. 여기서 코드 조각은 콜백의 각 실행마다 '16'을 출력합니다. 1, 2, 3을 인쇄하려면 어떻게해야합니까? (순서가 다를 수 있음을 알았습니다.)
다음 코드 외에도 콜백 함수를 지정하는 몇 가지 방법을 시도했습니다 예 : function(data, textStatus) { return test(data, textStatus, idx); }, 'text');
등
어떻게 작동하나요?
function test(data, textStatus, siteNo)
{
console.log("siteNo=" + siteNo);
}
function loadConfigLists()
{
var siteReport;
// retrieve site configuration
jQuery.get("svGetSiteConfig.php", function(data, textStatus)
{
// retrieve port configuration for all sites
for (var idx=1; idx<=15; idx++)
{
var probeIP = siteConfigArray[idx].siteIP;
if (probeIP != "" && probeIP != null)
jQuery.get("svGetPortInfo.php?svSiteIpAddr=" + probeIP+"&s="+idx,
function(data, textStatus) { test(data, textStatus, idx); }, 'text');
else // IP value is blank
siteConfigArray[idx].portManifest = null;
}
}
}, 'text');
}
감사합니다. 그랬어. – Danny
영리한! ........... :-) – TMS
고마워, 나는 더 편리한 방법은 모든 함수 (var {}를 사용하는 blahblah)를 (function (ii) {return function ({ 오래된 코드이지만 i를 "ii"로 변경)}}) (i); –