0

これが私のコードです。この形で「同一生成元ポリシー」に苦しんでいるのかどうか、親切に見てください。HTMLのドメインは(http://127.0.0.1/jqload.html)&phpファイル(http://127.0.0.1/conn_sql.php)です。これはjson形式です:[{"options": "smart_exp"}、{"options": "user_int"}、{"options":"blahblah"}]実際にHTYMLで受信したjsonデータをユーザーに追加したい入力&私はそれに苦しんでいます。構文解析にevalを使用する場合、ここに置くことをポイントすると問題なく機能します。しかし、JSON.parseを使用して解析すると、コード全体が機能しなくなり、このエラーメッセージが発行されます。「重要:デプロイ前にjson2.jsからこの行を削除してください」。私は他の質問のために私のコードをstackoverflowフォーラムに置きました、そして私は私のコードが「同一生成元ポリシー」に苦しんでいると言われました これにより、JSONデータの追加で問題が発生します。それで、私のコードがこのポリシーに苦しんでいるのを親切に見ることができますか?ファイルが異なるドメインに存在するかどうかを制限することを知っているので、そのポリシーに苦しんでいるのではないかと疑っていますが、ここでは両方のファイルが隣り合って存在しています。

コード:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">
<html><head></head>
 <body> 
  <form name="index">
   <p><input type = "text" id = "txt" name = "txt"></input>
   <p><input type = "button" id = "send" name = "send" value = "send" onClick= 
       "ADDLISTITEM"></input>
   <p><select name="user_spec" id="user_spec" />
  </form>
  <script>
  function ADDLISTITEM()
  {
      alert (json.length); // working
      alert json.options[1]; // do not show any value, message just for testing
      json.options[json.length+1] = 'newOption'; //not working; HELP HERE
      jsonString = JSON.stringify(json);//working fine for current data
      alert(jsonString);
      //here I have to implement send this stringify(json) back to server,HELP  
      //HERE     
  }                    
  </script>
  <script src="http://code.jquery.com/jquery-latest.min.js"></script>
  <script>
  var json;
  $(document).ready(function() { 
      jQuery .getJSON("http://127.0.0.1/conn_mysql.php", function (jsonData) {
          json = jsonData;
          $.each(jsonData, function (i, j) {
              document.index.user_spec.options[i] = new Option(j.options);
          });
      });
  });
  </script>
 </body>
</html>
4

1 に答える 1

0

あなたは正しい方向に進んでいますが、ここでは、オブジェクトではなく、文字列$.each(jsonData, function (i, j) { ... }の各文字を実際にループしています。内でjsonDataをjsonに変更するだけで、正常に機能するはずです(evalとJSON.parseのどちらを使用しているかに関係なく、後者をお勧めします)。jsonDatajson$.each()

編集済み:を使用しているのでjQuery.getJSON()、を使用する必要はありません。evalまたはJSON.parse--jQueryが自動的に実行します。したがって、コールバック関数内で、を設定するだけですjson = jsonData

<script>
  var json;
  $(document).ready(function() { 
      jQuery .getJSON("http://127.0.0.1/conn_mysql.php", function (jsonData) {
        json = jsonData;
        $.each(json, function (i, j) {
            document.index.user_spec.options[i] = new Option(j.options);
        });
      });
  });
</script>
于 2010-10-28T11:45:06.540 に答える