내 코드가 비동기 적으로 작동하지 않는 이유를 이해하는 데 문제가 있습니다.내 아약스가 비동기로 작동하지 않는 이유
비동기 적으로 실행하면 get_price.php는 이전 경고가 고유 한 $ _GET 값을 출력하더라도 항상 동일한 $ _GET 값을받습니다.
var arraySize = "<? echo count($_SESSION['items']); ?>"; //get items count
var pos = 0;
var pid;
var qty;
getPriceAjax();
function getPriceAjax()
{
pid = document.cartItemForm.elements[pos].id; //product id
qty = document.cartItemForm.elements[pos].value; //quantity
alert('Product: ' + pid + ' Quantity: ' + qty);
$.ajax({
url:"includes/ajax_php/get_price.php",
type:"GET",
data:'pid='+pid+'&qty='+qty,
async:true,
cache:false,
success:function(data){
while(pos < arraySize)
{
document.getElementById(pid + 'result').innerHTML=data;
pos++;
getPriceAjax();
}
}
})
}
나는 많은 경고를하지만 첫 번째 요청에서 데이터를 반환하는 코드를 arraySize 시간을 실행하는 걸릴까요? –
예, 첫 번째 요청의 데이터를 저장하고이를 표시하는 것으로 보입니다. – payling
첫 번째 응답을받는 즉시 모든 전화를 걸기 때문입니다. 데이터는 다른 요청이 반환되기 전에 arraySize와 동일한 것으로 설정됩니다. 후속 응답은 절대로 while 루프를 입력하지 않습니다. –