1

次のjsonを出力するmagentoショップとのリンクがあります(テスト目的で偽の値を無視してください)。

jsfiddle http://jsfiddle.net/ZkZ4D/

きれいではないフォーマット、phpによる出力

[[{"customer_address_id":"4","created_at":"2013-01-14 10:49:59","updated_at":"2013-01-14 10:49:59","city":"abc town","country_id":"NL","firstname":"john","lastname":"doe","postcode":"7091 eh","street":"mwhahah 47\nmwhgahahahaha","telephone":"31645494440","is_default_billing":true,"is_default_shipping":true}],[{"customer_address_id":"4","created_at":"2013-01-14 10:49:59","updated_at":"2013-01-14 10:49:59","city":"abc town","country_id":"NL","firstname":"john","lastname":"doe","postcode":"7091 eh","street":"mwhahah 47\nmwhgahahahaha","telephone":"31645494440","is_default_billing":true,"is_default_shipping":true}]]

人間の読書のためのきれいなフォーマット

[
    [
        {
            "customer_address_id": "4",
            "created_at": "2013-01-14 10:49:59",
            "updated_at": "2013-01-14 10:49:59",
            "city": "abc town",
            "country_id": "NL",
            "firstname": "john",
            "lastname": "doe",
            "postcode": "7091 eh",
            "street": "mwhahah 47\nmwhgahahahaha",
            "telephone": "31645494440",
            "is_default_billing": true,
            "is_default_shipping": true
        }
    ],
    [
        {
            "customer_address_id": "4",
            "created_at": "2013-01-14 10:49:59",
            "updated_at": "2013-01-14 10:49:59",
            "city": "abc town",
            "country_id": "NL",
            "firstname": "john",
            "lastname": "doe",
            "postcode": "7091 eh",
            "street": "mwhahah 47\nmwhgahahahaha",
            "telephone": "31645494440",
            "is_default_billing": true,
            "is_default_shipping": true
        }
    ]
]

上記のjsonを取得するにはどうすればよいですか?

phpコード

class ajax extends plantinaNLmagento
    {
    public function __construct()
        {
        parent::__construct();
        } 
    public function getCustomerAdressAjax()
        {
        $id = (int)$_GET['customerid'];
        $q = $this->db->query("SELECT * FROM `tbl_magento_users` WHERE `core_id`=:ID",array('ID'=>$id));
        $customeradresses = array();
        while($who = $q->fetchObject())
            {
            $x=$this->mage->call('customer_address.list',$who->magento_ID);
            array_push($customeradresses,$x); 
            array_push($customeradresses,$x);
            }
        header('Cache-Control: no-cache, must-revalidate');
        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
        header('Content-type: application/json');
        echo json_encode($customeradresses);
        }
    }

$customeraddressテスト目的で2回プッシュしています。

結果のjsonをjsonlintまたは他のjsonバリデーターに貼り付けると、すべて有効なjsonであると表示されます。

関数JSON.parseまたはjQuery.parseJSONで使用すると、予期しないトークンエラーが発生しますが、どのトークンまたは場所が表示されません。また、jsonが評価を通過するため、どのトークンが失敗するかがまったくわかりません。で。

私はfacepalmのカテゴリーで何かを見逃しているに違いありませんが、私は単にそれを見つけることができません...

エラーメッセージ SyntaxError: Unexpected token

4

1 に答える 1

1

JSONデータは完全に有効ですが、PHPスクリプトがJSONデータのみを送信し、他には何も送信しないことも確認する必要があります(通知、警告、エラーなどによりJSONが破損します)。

確認するには、ブラウザの開発ツールやFireBugなどを使用し、[ネットワークインスペクター]タブを見て、PHPによって送信された実際の応答を確認します。必要に応じてエラーを修正してください。

フィドルについて:JSONデータをJavaScript文字列内でそのまま使用することはできません。少なくとも、バックスラッシュをエスケープする必要があります(たとえば、JSON"Hello\nWorld"はになります'"Hello\\nWorld"')。

于 2013-03-04T13:05:11.697 に答える