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

JSON.parse メソッドを使用する

あなたのコードでは、次のように収まります

var respObj = JSON.parse(response);

*********編集*********

ほとんどのブラウザーは、ECMA-262 5th Edition (JS が基づいている仕様) で定義されている JSON.parse() をサポートしています。使い方は簡単です:

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

alert(obj.count);

ないブラウザの場合は、json2.js を使用して実装できます。

コメントに記載されているように、すでに jQuery を使用している場合は、利用可能な場合は JSON.parse にマップされる $.parseJSON 関数、または古いブラウザーの形式の eval があります。ただし、これは JSON.parse によっても実行される追加の不要なチェックを実行するため、全体的なパフォーマンスを最適化するには、次のように使用することをお勧めします。

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

これにより、文字列をネイティブ解析関数に渡す前に jQuery に文字列のサニティ チェックを実行させるのではなく、ネイティブ JSON.parse をすぐに使用できるようになります。

ソース: JavaScript で JSON を解析しますか?

于 2013-08-29T20:30:00.643 に答える
0

$.post レスポンスを投稿できますか?

とにかく、次のように dataType として json で $.ajax を使用する方が良いと思います:

   $(document).ready(function() {

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

        }
        })

    });
于 2013-08-29T20:29:09.693 に答える