0

请在下面找到加载主页时加载的 javascript。

    $(document).ready(function() {

       $.post('../business logic/NewsLogic.php', null, function(response) {
             var respObj = $.parseJSON(response);
             if (respObj != null) {
                 alert('I am here ');
             }
});

我无法解析 JSON 我得到了对象不支持属性或方法 parseJSON 的错误

/* 下面是 PHP 示例 */

  $newsDAO = new NewsDAO();
  $newsInfo = new News();
  $respArr = array();

  $respArr = $newsDAO->showAllNews();
  print json_encode($respArr);

其中 respArr 是一个包含元素的数组。

4

2 回答 2

0

你可以发布 $.post 回复吗?

无论如何,我认为将 $.ajax 与 json 一起用作 dataType 会更好,例如:

   $(document).ready(function() {

        $.ajax({
type:'post',
        url: '../business logic/NewsLogic.php',
        data: 'somequerystring',
        dataType: 'json',
        success: function(jsonObject) {

        }
        })

    });
于 2013-08-29T20:29:09.693 回答
0

使用 JSON.parse 方法

在您的代码中,它适合

var respObj = JSON.parse(response);

*********编辑*********

大多数浏览器都支持 JSON.parse(),它是在 ECMA-262 第 5 版(JS 所基于的规范)中定义的。它的用法很简单:

var json = '{"result":true,"count":1}',
    obj = JSON.parse(json);

alert(obj.count);

对于不支持的浏览器,您可以使用 json2.js 实现它。

如评论中所述,如果您已经在使用 jQuery,则有一个 $.parseJSON 函数映射到 JSON.parse(如果可用)或旧浏览器中的一种 eval 形式。但是,这会执行额外的、不必要的检查,这些检查也由 JSON.parse 执行,因此为了获得最佳的全面性能,我建议像这样使用它:

var json = '{"result":true,"count":1}',
    obj = JSON && JSON.parse(json) || $.parseJSON(json);

这将确保您立即使用本机 JSON.parse,而不是让 jQuery 在将字符串传递给本机解析函数之前对字符串执行完整性检查。

来源:在 JavaScript 中解析 JSON?

于 2013-08-29T20:30:00.643 回答