2016-03-01 62 views
0

我是一個使用jquery和jquery mobile編寫網站的新手。這會使用jQuery ajax以JSON文件的形式加載一組問題,然後用戶通過問題解決問題。在第一次打開,頁面打開成功使用的代碼看起來像這樣2個JSON文件:在重新加載頁面中使用Ajax調用的問題

功能loadJSON(keytoload){

$.ajax({ 
    url: keytoload, 
    dataType: "json", 
    async: false, 
    success: function (keyloaded) { 
            dataset=keyloaded; 
            }, 
    error: function (request,error) { 
            alert('Error has occurred please try again!'); 
            } 
});   
} 

我發現異步必須設置爲false這個工作。如果async爲true,則不顯示JSON文件中的數據而顯示頁面。

用戶完成一系列步驟後,會加載一個新的JSON文件來替換第一個JSON文件,這通常可以正常工作。但是,重新加載頁面是不穩定的。它在Windows上的Firefox/Chrome中運行良好,但如果在Android Chrome上加載頁面時進行頁面刷新則會報錯。所以我認爲我的代碼在某處存在問題。

有沒有更好的方法可以做到這一點?

+0

從哪裏調用這個fn loadJSON? 「數據集」在哪裏定義? –

+0

您需要在'success'處理程序中執行渲染,而不僅僅是'dataset = keyloaded;'然後您可以移除'async:false' –

+0

錯誤是什麼?什麼東西印在控制檯上? – twill

回答

0

這裏你的問題是由於你沒有正確使用ajax。你不知道需要多長時間才能從服務器返回結果。

正確的位置架構將是:在開始之前,阿賈克斯

  1. 顯示的加載股利。
  2. 成功後,在頁面上添加問題。
  3. 在下一個顯示再次加載。
  4. 成功呈現新內容。

只是成功設置變量是錯誤的;如果成功,您將根據來自後端的值呈現內容。不建議以同步方式使用ajax,因爲它可以阻止腳本。

+0

謝謝!那是我的錯誤。成功並沒有調用重寫頁面的函數。現在適用於async:true並以合理的方式行事。感謝所有的貢獻 – GilesJ

相關問題