2011-09-09 49 views
3

我遇到了一些涉及PHP &使用jQuery的AJAX的問題。爲了讓所有的解釋更容易,我要簡單地給一個鏈接到我的工作和網站,如果你使用「報價計算器」選項卡,然後按照步驟,你應該希望瞭解我的問題AJAX調用並不總是在用戶交互時加載

http://bothrealities.very-dev.co.uk/green-it

以防萬一你沒有,這裏是一個解釋:

當我點擊一個單選按鈕時;模型部分中的單選按鈕(通過AJAX調用PHP文件和數據庫的數據),右側的信息框並不總是填充,有時看起來好像數據卡在緩存中。你可以點擊一個模型,然後當你再次點擊你選擇的模型之前在信息框中填充(就好像它是一個點擊後面)

現在我不確定它是否是速度的情況用戶點擊按鈕,從而打破原來的AJAX呼叫?

我不知道我是否需要將頁面禁用/灰色,並有一個加載輪,直到數據回來,所以用戶不能干涉過程,或不?

如果上述解釋令人困惑,我強烈建議您訪問上面的鏈接並自己嘗試一下,但這樣更容易理解。

非常感謝您提前解決這個問題的人,我甚至可以在這篇文章中發表一個小小的獎勵。

感謝,

丹。

P.s我不知道如何添加賞金呢,對不起。

編輯:::

function productString(product, box) { 
     $.get("http://<? echo ROOT; ?>includes/forms.php", { product: product }, function(data) { 
      $("#loadingModel").append(data); 
     }); 

     $.get("http://<? echo ROOT; ?>includes/forms.php", { box: box }, function(data) { 
      $("#content-right").empty(); 
      $("#content-right").append(data); 
      $("#content-right").jScroll(); 
     }); 
    } 

    function modelString(model, boxModel) { 
     $.get("http://<? echo ROOT; ?>includes/forms.php", { model: model }, function(data) { 
      $("#loadingData").empty().append(data); 
     }); 

     $.get("http://<? echo ROOT; ?>includes/forms.php", { boxModel: boxModel }, function(data) { 
      $("#boxModel").empty().append(data); 
     }); 
    } 
+0

這是否發生在所有瀏覽器? –

+0

它當然可以 – zealisreal

回答

2

有時候你http://bothrealities.very-dev.co.uk/includes/forms.php?boxModel=1結束http://bothrealities.very-dev.co.uk/includes/forms.php?model=xxxxx已經從第二次請求結束前使返回的數據是不是你想要得到什麼。

您也可以通過在第二個「GET」中傳遞模型參數來嘗試。

+0

我將編輯我的問題,並將其放入我擁有的jQuery代碼中,這可能可以幫助您推斷出錯的地方? – zealisreal

+1

您通過發送請求「http://bothrealities.very-dev.co」將信息傳入#boxModel。uk/includes/forms.php?boxModel = 1「嘗試發送模型」http://bothrealities.very-dev.co.uk/includes/forms.php?boxModel=1&model=xxxx「並將您的PHP代碼修改爲通過使用這個第二個參數來獲取數據現在不能工作,因爲當你調用'http://bothrealities.very-dev.co.uk/includes/forms.php?boxModel=1'時,之前的模型請求並沒有't完成了,我假設你從前一個請求中獲得了模型 –

+0

你的回答使我進入了修正,讓我知道boxModel GET在模型GET之前就已經結束了,讓我意識到我所要做的就是放置在第一次GET調用中的modelString函數內執行第二次GET調用:) – zealisreal

1

「加載輪」肯定會幫助用戶(關於發生了什麼)。 我沒有看過代碼,但這裏是你如何調試。

  1. 「刪除」AJAX調用之前的方框。
  2. 在回調函數中,使用console.log(ajaxcontent)來確保你從ajax得到了預期的內容。 (這是firebug的一個不錯的功能 - 一個Firefox插件)
  3. 更新框。

我希望這有助於。