Как создать объект JSON содержит HTML-код - PullRequest
0 голосов
/ 26 апреля 2011

У меня есть случай, когда мне нужно отправить HTML-код со стороны клиента на серверную сторону через объект json, но есть некоторые проблемы, вызванные символами внутри HTML-тега, такие как ", / ... и т. Д., Которые создают ошибки вобъект json. Я пробовал много способов построить json, но ни один из них не был правильным. Надеюсь, вы ясно понимаете мой случай. Это пример моей структуры json:

{
   "html":"the html code injected dynamical here"
}

, как я сказал, мой основнойпроблема в том, что у меня возникают проблемы, вызванные символами HTML, как я могу ее решить! пожалуйста, дайте мне явный пример того, как решить эту проблему, и успешно проанализируйте код HTML для объекта json.

Ответы [ 5 ]

2 голосов
/ 26 апреля 2011

Я не уверен в том, как вы создаете объекты JSON, но если вы используете json_encode() и json_decode(), у вас не должно возникнуть проблем с символами HTML, они будут экранированы правильно.

1 голос
/ 26 апреля 2011

Не уверен, что если я неправильно прочитал вопрос, но для передачи json с сервер на клиент , используйте json_encode()

http://php.net/manual/en/function.json-encode.php

Это должно сработать для вас и позаботиться обо всех побегах.

<?php
header('Content-type: application/json');
$json = array(
    'html'    =>    '<h1 style="color:#0F0">Hello World!</h1>'
);
echo json_encode($json);
exit;

Хм, только что выучил этот лакомый кусочек из чтения документов:

json_encode () не будет работать с наборы символов, отличные от UTF-8

Я не понимаю, зачем вам нужно отправлять json на сервер, может, вы можете поделиться с нами причиной или кто-то может просветить меня в комментариях?

0 голосов
/ 26 апреля 2011

Если вы используете jQuery, эта библиотека js может помочь. http://www.rahulsingla.com/blog/2010/05/jquery-encode-decode-arbitrary-objects-to-and-from-json

В вашем javascript перед отправкой запроса сделайте следующее:

var thing = {plugin: 'jquery-json', other: "blah-blah"};
var encoded = $.JSON.encode(thing);

Затем, после отправки запроса в php, сделайте это для декодирования:

var thing = json_decode($_POST['thing']);

Подробнее об этом можно прочитать здесь

0 голосов
/ 26 апреля 2011

Вы можете закодировать HTML.Некоторое html-кодирование и декодирование можно найти здесь: http://code.google.com/p/jsool/source/browse/jsool-site/js/util/Encoder.js?r=176

Вам просто нужны функции html.encode и html.decode, чтобы вы могли сделать что-то вроде

function html_encode(string){
    return string.replace(/./g,function(chr, index){
            return chr.match(/[\w\d]/) ? chr : "&#"+chr.charCodeAt(0)+";" ;
    });
},
function html_decode(string){
    return string.replace(/&#[0-9]+;/g,function(text,index){
            return String.fromCharCode(text.match(/[0-9]+/)[0]);
    });
}

Таким образомВы можете сделать

var html = html_encode(myhtml);
{"html": html}

для кодирования и восстановления значений с помощью html_decode ().

PS. Извините, я не проверял функции html_encode и decode, но легко найти некоторыена Google.

0 голосов
/ 26 апреля 2011

Возможно, вы могли бы использовать URL-кодировку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...