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对象。只需将 jsonData 更改为 json 中的 json $.each(),它应该可以正常工作(无论您使用的是 eval 还是 JSON.parse,但我推荐后者)。

编辑:由于您正在使用jQuery.getJSON(),因此您不需要使用evalJSON.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 回答