Ошибка JSON при передаче html - PullRequest
0 голосов
/ 18 февраля 2012

У меня проблема с JSON, передача html-кода, я не понимаю, потому что я сбежал с php-функцией addlashes.

Это сбой JSON:

С php JSON действителен:

<?php if(count($articles)): ?>
{"items":[
<?php foreach($articles as $key => $article): ?>
      <?php if($key==0  ):?>
      {
        "foto_g": "<?php echo $article->getRutafoto() ?>",
        "foto_th": "<?php echo $article->getRutathumb() ?>"

      }
    <?php else: ?>  
    ,
      {
        "foto_g": "<?php echo $article->getRutafoto() ?>",
        "foto_th": "<?php echo $article->getRutathumb() ?>"

      }
    <?php endif ?>  
<?php endforeach ?>
],
"nom_coleccio": "<?php echo $coleccio->getNom()?>"
,
"descripcio_coleccio": "<?php echo addslashes($coleccio->getDescripcio(ESC_RAW))?>"
}
<?php endif ?>  

И результат, который имеет проблему:

{
"descripcio_coleccio": "<p>El delta de l\'Ebre ha estat l\'escenari d\'inspiraci&oacute; d\'aquesta col&middot;lecci&oacute;.</p>
<p>La l&iacute;nia de l\'horitz&oacute; i el color del paisatge materialitzats en alumini s\'uneixen per a crear volum en forma de joia.</p>"
}

Когда проблема?

С уважением

Ответы [ 3 ]

3 голосов
/ 18 февраля 2012

Вы должны использовать надлежащие функции кодирования, если это возможно. В случае JSON вы должны использовать json_encode, даже если только для определенных значений.

Но было бы проще, если бы вы собрали значения в массив с ассоциативными ключами и использовали json_encode только в конце:

if (count($articles)) {
    $items = array();
    foreach ($articles as $key => $article) {
        $items[] = array(
            "foto_g"  => $article->getRutafoto(),
            "foto_th" => $article->getRutathumb()
        }
    }
    $data = array(
        "items"               => $items,
        "nom_coleccio"        => $coleccio->getNom(),
        "descripcio_coleccio" => $coleccio->getDescripcio(ESC_RAW)
    );
    echo json_encode($data);
}
2 голосов
/ 18 февраля 2012

Не делай этого! Вместо этого правильно сконструируйте JSON в PHP:

<?php
        echo json_encode(array
        (
            "descripcio_coleccio" => $coleccio->getDescripcio(ESC_RAW)
        ));
?>
0 голосов
/ 18 февраля 2012

Эти одинарные кавычки не должны быть экранированы:

{
    "descripcio_coleccio": "<p>Eldeltadel'Ebrehaestatl'escenarid'inspiraci&oacute;d'aquestacol&middot;lecci&oacute;.</p><p>Lal&iacute;niadel'horitz&oacute;ielcolordelpaisatgematerialitzatsenaluminis'uneixenperacrearvolumenformadejoia.</p>"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...