【发布时间】:2011-08-15 02:51:19
【问题描述】:
非常初级的问题。尝试学习 JSON 并无法获取正确的返回数据。我正在尝试使用 JSON 从使用 json_encode($errs, JSON_FORCE_OBJECT) 的 php 表单中返回错误,但首先我想让下面非常简单的代码能够理解 JSON 对象。
我在这里查看了类似的线程,阅读了整个 JSON.org 文档,查看了 JQuery 的 $.getJSON() 方法并插入了文档中的确切代码,以及 JSON 文档的确切代码,以及除了“未定义”或“[对象,对象]”之外,我似乎仍然无法得到响应。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!---CSS-->
<link href="style/960.css" media="all" rel="stylesheet" type="text/css" />
<link href="style/pubstyle.css" media="all" rel="stylesheet" type="text/css" />
<!--- Javascript -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"
type="text/javascript"></script>
<script src="javascripts/form.js" type="text/javascript"></script>
<script src="javascripts/validate.min.js" type="text/javascript"></script>
<script src="javascripts/json2.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function() {
var resp = {"message":"hi"};
$("a#button").click(function(resp) {
alert(resp)
});
});
</script>
<a id="button" href="#">Button</a>
</body>
</html>
上面的代码返回带有“[object Object]”的警报。当我将代码更改为:
$(document).ready(function() {
var resp = {"message":"hi"};
$("a#button").click(function(resp) {
alert(resp.message)
});
});
我收到“未定义”警报。我尝试将它放入一个数组对象
{ "messages": [ {"message":"hi"}]}并用
resp.messages[0].message 调用它,但没有成功。我尝试将 Content-Type 更改为“application/json”和“text/plain”,但都没有奏效。也试过了
$(document).ready(function() {
var resp = jQuery.parseJSON('{"message":"hi"}');
$("a#button").click(function(resp) {
alert(resp.message)
});
});
【问题讨论】:
-
请注意,只有您的最后一个 sn-p 涉及任何 JSON(这是一种文本数据格式 基于 [并以] JavaScript 中的对象和数组表示法命名) .这个问题的大部分是关于 Javascript 语法的对象和数组表示法。
-
(jQuery 作为其 AJAX 机制的一部分,将 JSON 格式的文本反序列化为适当的 Javascript 结构,这无济于事,从而进一步模糊了这两个概念之间明显的“界限”。)
-
不要使用
alert进行调试,而是使用调试器。如果警报显示"[object Object]"(这是字符串由Object.toString返回),像Firebug 这样的适当调试器将允许您查看对象的实际结构。
标签: javascript jquery json parsing