[英]Why isn't my JSON function working?
我有一个函数,该函数在未到达服务器的远程服务器上调用php页面。 直到我今天检查该功能(客户告诉我该计数器未更新)后,此功能才起作用。 传入的参数是一个字符串,警报显示参数ok,但是res.counterValue值不是从php页面返回的。
function getCounterJSON(param) {
//alert('param: '+ param);
$.getJSON('http://domainname/path/view.php?callback=?', 'counter=' + param, function(res) {
//alert('return value '+res.counterValue);
document.getElementById(param).innerHTML = '   ' + res.counterValue + ' views';
});
}
PHP页面上的回调函数
{
echo $_GET['callback'] . '(' . "{'counterValue' : $counterValue}" . ')';
}
还可以从数据库中检索counterValue。
只需在服务器端使用json_encode
echo json_encode(array('counterValue'=>$counterValue));
您应该使用json_encode
而不是构造自己的JSON,如下所示:
echo json_encode(array('counterValue' => $counterValue));
除非您使用JSONP (并且您没有使用,因为jquery.Ajax的dataType
参数未设置为"jsonp"
),否则不需要回调。
除此之外,您的代码不起作用的原因是它用单引号( '
)分隔了字符串。 根据JSON规范 ,字符串必须用双引号( "
)括起来。
另外,您应该使用DOM函数(或它们的jQuery等价物,例如append
)而不是innerHTML
。
无论哪种方式,HTML实体都必须以分号结尾; 你想要
(尽管某些浏览器也会呈现无效的 
)。
真正的问题是您没有返回JSON,而这正是$.getJSON
期望的。 您正在返回JavaScript。 使用$.get
代替。
但是,其他人都对使用json_encode
编码json是正确的。 不要自己构建json。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.