【发布时间】:2011-05-01 20:08:35
【问题描述】:
这是我的代码。您必须仔细看看它是否受到这种形状的“同源政策”的影响。 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>
【问题讨论】:
-
需要更好的格式,也许还有更好的措辞。我仍然不知道您要做什么,也不知道有什么问题。而且我不知道什么是“这个论坛”(是 StackOverflow 吗?)。
-
实际上,我最初想将我从 php 文件收到的 json 数据附加到我的 HTML 表单中,并带有用户输入。我将我的代码放在 stackoverflow 论坛上以解决其他一些问题,并被告知我的代码受到“同源策略”的影响,这导致了打盹 json 数据的问题。所以你能不能看看我的代码是否受到这个政策的影响。如果是这样,我怎么能从那个政策问题中恢复过来。虽然我怀疑我的代码是否受到该政策的影响,因为我的两个文件都位于同一个域中。
-
您遇到什么错误?您是否在控制台 (Ctr-J) 中看到任何消息?你确定你得到的 JSON 字符串包含有效的 JSON(根据jsonlint.com)吗?下一次,请不要使用“u”之类的“缩写”,而要使用“you”。此外,您应该编辑您的原始问题,而不是打开一个新问题。但是暂时不要考虑,重新格式化您的问题并缩进您的代码非常麻烦。作为记录,why JavaScript is not displaying parsed json data? 的副本
-
如果我使用 eval() 来解析,那么现在在这个线程中编写的代码正在运行。但是,如果我使用 alert json.option[0] 即查看是否可以附加它,它不会输出任何内容。 &如果我使用 JSON.parse 进行解析,则所有原始代码中的第一个停止工作,即使用 json 填充 select 并引发错误“重要:在部署前从 json2.js 中删除此行”。是的,我检查使用 jsonlint.com 及其有效。对不起,其实我是用来节省空间的。实际上我在 OP 中也引用了该消息,我不确定是否也可以更改消息标题。
-
该消息(“从 json2.js 中删除此行...”)本身就很清楚:在使用 json2.js 之前删除该行。你不是在链接那个库,是吗?
标签: php javascript jquery json same-origin-policy