Попробуйте добавить немного случайного числа в ваш URL-адрес get, чтобы сервер не кэшировал его, например:
url:"includes/ajax_php/get_price.php&rnd=" + Math.floor(Math.random()*10000)
Это также может быть проблема с синхронизацией. Поскольку он асинхронный, он может проходить через цикл и оповещать до того, как значение вернется. Ваш счетчик pos не будет увеличиваться до тех пор, пока не вернется, поэтому вы всегда будете получать цену pos = 0, пока ваш звонок не вернется. Я бы переместил инкремент за пределы функции успеха. Также попробуйте переместить предупреждение в функцию успеха.
function getPriceAjax()
{
pid = document.cartItemForm.elements[pos].id; //product id
qty = document.cartItemForm.elements[pos].value; //quantity
$.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)
{
alert('Product: ' + pid + ' Quantity: ' + qty);
document.getElementById(pid + 'result').innerHTML=data;
getPriceAjax();
}
}
});
pos++;
}