2016-03-20 3 views
0

次のコードは、localStorageの値が整数の場合、または値が数字のみの場合にのみ機能します。それが答えは右の私の目の前にあることが可能ですので、JavaScriptを使用してかなり新しいイム..Javascript localStorageからデータを取得するときにキャッチされないReferenceError

<html> 
<body> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
    <div id="test"></div> 
</body> 
</html> 

<script type="text/javascript"> 

    localStorage.setItem('test', '12345'); 
    localStorage.setItem('foo', 'bar'); 
    localStorage.setItem('john', 'doe'); 
    localStorage.setItem('carl', 14); 

      var name, content; 
      for (var key in localStorage) { 
       $("#test").append('<button onclick="senddata('+localStorage[key]+')">'+key+'</button>'); 
      } 

    function senddata(content) { 
    $.post("processor.php", 
     {text: content}, 
     function(response){ 
      console.log(response); 
     } 
     ); 
    } 
</script> 

次は、コンソール

Uncaught ReferenceError: bar is not defined 
Uncaught ReferenceError: doe is not defined 
14 
12345 
14 

processor.php

に表示されたコードによって生成されたボタンを押します
if (isset($_POST['text'])) 
    die($_POST['text']); 

何が間違っていますか?読書:)それ以外の場合は、代わりに文字列'bar'sendata('bar'))の未定義の変数barsendata(bar))を送信しようとします

$("#test").append('<button onclick="senddata('+localStorage[key]+')">'+key+'</button>'); 

$("#test").append('<button onclick="senddata(\''+localStorage[key]+'\')">'+key+'</button>'); 

答えて

0

変更いただき、ありがとうございます。

0

数字のリテラルは裸に書かれています。例:123

しかし、文字列リテラルでは常に一重引用符または二重引用符が必要です。例えば。 'foo'または"foo"

必要に応じて文字列リテラルを引用していることを確認します。

また、デバッグを試しましたか?スクリプトを実行して、何が起こっているかどうかを正確に確認します。また、ある時点でエラーが発生する可能性もあります。

関連する問題