我有一个函数调用未到达服务器的远程服务器上的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也从db ok中检索。
答案 0 :(得分:2)
只需在服务器端使用json_encode
echo json_encode(array('counterValue'=>$counterValue));
答案 1 :(得分:1)
您应该使用json_encode
而不是构建自己的JSON,如下所示:
echo json_encode(array('counterValue' => $counterValue));
除非您使用JSONP(并且您没有,因为jquery.Ajax的dataType
参数未设置为"jsonp"
),您不需要回调
除此之外,你的代码不起作用的原因是它用单引号('
)分隔字符串。根据{{3}},字符串必须用双引号括起来("
)。
此外,您应该使用DOM函数(或其jQuery等效项,例如append
)而不是innerHTML
。
无论哪种方式,HTML实体都必须以分号结尾;你想要
(虽然有些浏览器也会渲染无效的 
)。
答案 2 :(得分:0)
您真正的问题是您没有返回JSON,而这正是$.getJSON
所期望的。您正在返回JavaScript。请改用$.get
。
其他人对于用json_encode
编码json是正确的。不要自己建立json。