neden olmaz benim ajax iş uyumsuz

3 Cevap php

Ben sorun benim kod uyumsuz çalışmaz anlayış neden yaşıyorum.

Uyumsuz çalıştırırken get_price.php daima tetikte önce benzersiz bir $ _GET değerini verir olsa da aynı $ _GET değerini alır.

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();
            }
        }
    })  
}

3 Cevap

Özyineleme neredeyse beni yendi ...

Bunun yerine bir süre döngü kullanarak bir eğer koşullu ifadesi olmalıydı.

while(pos < ArraySize) YANLIŞ! - Parametreler kez diziboyu ilk seti yürütür.

if(pos < ArraySize) DOĞRU! - Böylece daha sonra ikinci, ilk yürütür ve ...

Ben benzer bir sorunu ele. Oldukça neler olduğunu hatırlamıyorum, bu yüzden bu cevabı çok yararlı olmayabilir. Sizin sunucu yanıtı önbelleğe olabilir. POST kullanarak deneyin.

Böylece sunucu önbelleğe, gibi pek gelmez olsun URL rasgele sayı biraz eklemeyi deneyin:

url:"includes/ajax_php/get_price.php&rnd=" + Math.floor(Math.random()*10000)

Aynı zamanda bir zamanlama sorunu olabilir. Bu uyumsuz olduğundan, döngü adım olabilir ve değeri geri gelmeden uyarı. Döndürür kadar Poz sayacı artırılır almazsınız, böylece çağrı gelene kadar her zaman pos = 0 fiyatını elde edilecektir. Ben başarı işlev dışındaki Arttırıcının hareket edeceklerdi. Ayrıca, başarı işlev içinde uyarı hareket deneyin.

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++;
}