반응형
jQuery ajax inside loop 문제
이 js 루프 스크립트는 항상 jquery ajax funciton 안에 있는 ui_item의 마지막 값을 가져옵니다.A는 어떻게 각 반복의 정확한 값을 잡을 수 있습니까?
for (var i = 0; i <= split_files_cb_value_holder.length - 1; i++){
var split_values = split_files_cb_value_holder[i].split(':');
ui_item = split_files_cb_value_holder[i];
$.ajax({
type: "POST",
url: "ds/index.php/playlist/check_folder",
data: "component_type="+$('#component_type').val()+"&value="+split_values[1],
success: function(msg)
{
console.log(ui_item); //ALWAYS GETS THE LAST VALUE
},
error: function()
{
alert("An error occured while updating. Try again in a while");
}
});
}
감사합니다!
문제는 익명 콜백 방식이 이를 포착한다는 점입니다.ui_item
참조에 의한 변수변수가 하나밖에 없기 때문에 항상 변수의 마지막에 할당된 것을 가져옵니다.
당신은 그 내용물을 포장해야 합니다.for
다음을 수행하는 함수를 순환합니다.i
매개 변수로, 루프의 함수를 호출합니다.래퍼 함수를 호출할 때마다 별도의 변수가 생성되어 문제가 해결됩니다.
예를 들어,
function doCheck(i) {
var split_values = split_files_cb_value_holder[i].split(':');
var ui_item = split_files_cb_value_holder[i];
$.ajax({
type: "POST",
url: "ds/index.php/playlist/check_folder",
data: "component_type="+$('#component_type').val()+"&value="+split_values[1],
success: function(msg)
{
console.log(ui_item); //Don't always get the last value
},
error: function()
{
alert("An error occured while updating. Try again in a while");
}
});
}
for (var i = 0; i < split_files_cb_value_holder.length; i++)
doCheck(i);
비동기식을 끄면 문제가 해결될 것 같습니다.내 말은 이것을 추가하라는 뜻입니다. 비동기:false
언급URL : https://stackoverflow.com/questions/2687679/jquery-ajax-inside-a-loop-problem
반응형
'programing' 카테고리의 다른 글
타입스크립트로 Angular에서 @Directives(@Components)에 여러 파라미터를 전달하는 방법? (0) | 2023.10.15 |
---|---|
arm-linux-gnueabi-gcc를 사용하는 안드로이드용 정적 Chello world 교차 컴파일 (0) | 2023.10.15 |
Wordpress에서 사용자 지정 게시물 유형에 대한 템플릿 만들기 (0) | 2023.10.15 |
.success and .error로 Angularjs에서 $q 약속을 확장하려면 어떻게 해야 합니까? (0) | 2023.10.15 |
입력 유형="숫자"에서 웹킷의 스핀 버튼을 비활성화하시겠습니까? (0) | 2023.10.15 |