2015-02-08 39 views
0

請幫忙, 我有一組動態生成的按鈕遞增輸入。首先我將id和值存儲到localstorage中,並且一切都很順利,我可以看到所有的id值對,但是我無法使用AJAX調用發送數據。 這裏是什麼樣子:無法通過AJAX存儲本地存儲值

的AJAX上按一下按鈕分配:

<script> 
     $("#send_order").click(function (e) { 
      if (localStorage) { 
       if (localStorage.length) { 
        for (var i = 0; i < localStorage.length; i++) { 
         var pid = localStorage.key(i); 
         var value = localStorage.getItem(localStorage.key(i)); 

         $.ajax({         
          url: "update.php?pid="+pid+"&qty="+value, 
          success: function(){ 
           alert("Прибыли данные: "); 
          } 
         }); 

        } 
       } else { 
        output += 'Нет сохраненных данных.'; 
       } 
      } else { 
       output += 'Ваш браузер не поддерживает локальное хранилище.'; 
      } 
      )}; 
    </script> 

但點擊該按鈕時沒有任何反應。 我做錯了什麼?

+0

工作正常,我:)我使用Chrome 40.0.2214.111(最新) – Victor2748 2015-02-08 16:28:02

+0

任何控制檯錯誤?放置一個斷點並逐步執行代碼並檢查變量? – oldwizard 2015-02-08 16:32:33

+0

我看到你正在做循環中的ajax調用。難道你不認爲一次發送localstorage數組更有效嗎(只有一個ajax調用)? – 2015-02-08 16:43:02

回答

1

雖然你的代碼看起來不錯,但在環路中逐個發送本地存儲數據的效率並不低。將localstorage轉換爲json字符串並同時發送所有內容更有意義。你可以在你的PHP更新腳本中使用json_decode json字符串。此外,我還包含一個函數來測試localStorage是否可用,方法是嘗試寫入它。這是更可靠的,然後if(localStorage)

$("#send_order").on("click", function() { 
    var output=''; 
    if(localStorageTest() === true){ 
     console.log('localStorage is available'); 
     if(localStorage.length){ 
      var data=JSON.stringify(localStorage); 
      $.ajax({ 
        type: "GET",        
        url: "update.php?data="+data, 
        success: function(){ 
           alert("your data is send correctly!"); 
        } 
      }); 

     }else{ 
      output += 'localStorage is empty\n';  
     } 
    }else{ 
     output += 'localStorage is not available\n'; 
    } 
}) 

function localStorageTest(){ 
    var test = "test"; 
    try { 
     localStorage.setItem(test, test); 
     localStorage.removeItem(test); 
     return true; 
    } catch(e) { 
     return false; 
    } 
} 
+0

'如果(localStorage)'更可靠。我不得不不同意你的看法:) OP所做的就是功能測試,它是迄今爲止檢查瀏覽器是否支持某些功能的最簡單也是最好的方法。 – Arkantos 2015-02-08 17:37:19

+0

謝謝Kasper!工作正常! – 2015-02-08 18:07:57

+0

@Arkantos:對不起,但你錯了。如果(localStorage)爲true,而localStorage不可用,那麼舊版瀏覽器可能會評估它。看到modernizers來源:https://github.com/Modernizr/Modernizr/blob/master/feature-detects/storage/localstorage.js – 2015-02-08 18:41:26