这是JSON数据的格式:[{“options”:“smart_exp”},{“options”:“user_int”},{“options”:“blahblah”}]我通过服务器的getjson收到。我需要用用户输入附加json。我试图这样做:第一次将其转换为javascript对象,用用户输入附加,再次转换为json对象&将其发送回服务器以进行数据库更新。我已经使用eval()将json转换为javaScript对象。现在无法操纵javascript对象。如果我将javascript对象转换回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>
<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()
{// this script suffers from errors on eval/JSON.parse methods
alert (json.length);//outputs corrcet with eval
tring = JSON.stringify(json);//outputs corrcet with eval
alert(jsonString);//outputs corrcet with eval
alert(json.options[0]);//no output
}
</script>
<script src="http://code.jquery.com/jquery-latest.min.js">
</script>
<script src="http://www.json.org/json2.js"></script>
<script>
var json;
$(document).ready(function() {
jQuery .getJSON("http://127.0.0.1/conn_mysql.php", function (jsonData) {
json = eval(jsonData);
//json = JSON.parse(jsonData);/*error if uncomment:"IMPORTANT: Remove this line from
json2.js before deployment"*/
$.each(jsonData, function (i, j) {
document.index.user_spec.options[i] = new Option(j.options);
});});
});
</script>
</body>
</html>
答案 0 :(得分:3)
在jQuery中,使用已解析的JSON数据调用$ .getJSON()的回调;只是使用它。
$.getJSON("*.php", function(data) {
$.each(data, function() { alert(this.options); });
);
应该为数组中的每个{“options”:“xyzzy”}对象提供警报。
OP编辑帖子后编辑: 你的编辑澄清了一些事情:你不会得到任何数据 - 它也会完全沉默,因为我发现了 - 如果你违反same origin policy。< / p>
基本上(有例外(预检检查等)),您只能通过AJAX 访问完全相同的域上的URL。如果您的HTML文件是本地提供的静态文件,则无法访问http://127.0.0.1/;如果您的文件是http://foo.baz.quux.org/,则不能简单地将AJAX转换为http://mordor.baz.quux.org。
答案 1 :(得分:0)
var json = [{"options":"smart_exp"}, {"options":"user_int"}, {"options":"blahblah"}]
for (var i = 0; i < json.length; i++){
alert(json[i].options)
}
答案 2 :(得分:0)
我不认为这里的问题与eval / parse等或同一原始政策有关。您的json是一个对象数组,每个对象都包含一个名为options的成员。因此,您无法执行json.options[0]
,必须执行json[0].options
。