繁体   English   中英

为什么我的JSON函数不起作用?

[英]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 = '&nbsp&nbsp&nbsp' + 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.AjaxdataType参数未设置为"jsonp" ),否则不需要回调。

除此之外,您的代码不起作用的原因是它用单引号( ' )分隔了字符串。 根据JSON规范 ,字符串必须用双引号( " )括起来。

另外,您应该使用DOM函数(或它们的jQuery等价物,例如append )而不是innerHTML

无论哪种方式,HTML实体都必须以分号结尾; 你想要  (尽管某些浏览器也会呈现无效的&nbsp )。

真正的问题是您没有返回JSON,而这正是$.getJSON期望的。 您正在返回JavaScript。 使用$.get代替。


但是,其他人都对使用json_encode编码json是正确的。 不要自己构建json。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM