Object不支持属性或方法parseJSON

时间:2013-08-29 20:26:45

标签: php javascript jquery

请在下面找到加载主页时加载的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是一个包含Elements的数组。

2 个答案:

答案 0 :(得分:0)

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

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

   $(document).ready(function() {

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

        }
        })

    });

答案 1 :(得分: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在将字符串传递给本机解析函数之前对字符串执行完整性检查。

来源:Parse JSON in JavaScript?