非常初学者级别的问题。试图学习JSON并且无法获得正确的返回数据。我正在尝试使用JSON使用json_encode($errs, JSON_FORCE_OBJECT)
从php表单返回错误,但首先我想让下面的非常简单的代码来理解JSON对象。
我在这里查看了类似的线程,阅读了整个JSON.org文档,查看了JQuery的$ .getJSON()方法并插入了文档中的确切代码,以及JSON文档的确切代码,以及除了“undefined”或“[object,Object]”之外,我似乎仍然无法获得响应。
<!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)
});
});
答案 0 :(得分:4)
你在这里混淆了几个不同的元素。
简单示例,基于您问题中的最后一个代码块:
$(document).ready(function() {
var resp = $.parseJSON('{"message":"hi"}');
$('#button').click(function(event) {
alert(resp.message);
});
});
您的此代码版本无效,因为 click
回调函数接收到click事件对象作为其参数。回调中的resp
参数名称隐藏了resp
变量。