JSON проблема чтения данных в EXT Js? - PullRequest
1 голос
/ 12 августа 2011

сервер возвращает данные:

{
    "items": [{
        "id": "671",
        "post_title": "Seche Vite Dry Fast Top Coat",
        "post_content": "<span style=\"color\: \#ff0000\;\"><strong>Roy Recommends:<\/strong>\u00c2\u00a0 Edith, our in-house nail expert, swears by this product.\u00c2\u00a0 No manicure or pedicure is complete without adding this top coat as the finishing touch.<\/span>\r\n\r\nSeche Vite\u00e2\u201e\u00a2 dry fast top coat is widely acknowledged as the world\'s finest top coat.\u00c2\u00a0 Specially formulated to penetrate through nail lacquer to the base coat forming a single solid coating over the nail plate for a much more durable finish. Guaranteed not to yellow while leaving nails silky, stronger and resistant to chipping and peeling.\r\n\r\n&nbsp;",
        "post_excerpt": "",
        "post_status": "publish",
        "post_parent": "0",
        "parent_sort_id": "671",
        "prod_meta_data_key": "_wpsc_product_metadata",
        "category": "Roy Recommends,Nail Care",
        "_wpsc_price": "10",
        "_wpsc_special_price": "0",
        "_wpsc_sku": "",
        "_wpsc_stock": "4",
        "unpublish_when_none_left": "1",
        "weight": 8.5,
        "weight_unit": "ounce",
        "height": "0",
        "height_unit": "in",
        "width": "0       ",
        "width_unit": "in",
        "length": "0",
        "length_unit": "in",
        "local": "0",
        "international": "0",
        "no_shipping": "0"
    }],
    "totalCount": "1"
}

Я получаю следующую ошибку:

Uncaught SyntaxError: Unexpected token ILLEGAL
doDecodeext-all.js:7
(anonymous function)ext-all.js:7
o.callbacksm.js:249
Ext.extend.handleResponseext-all.js:7
fext-base.js:7
mext-base.js:7
(anonymous function)

Я нашел онлайн-инструмент: http://json.parser.online.fr/

В котором приЯ вставляю данные eval не может оценить пространство между span и style, так как eval может выполнять только выражение, а не оператор.здесь перерыв - утверждение:

<span style=\"color\: \#ff0000\;\">

, когда я делаю preg_replace("/[ ]+/",'&nbsp;',$data), это работает.Теперь проблема в том, что я не хочу появляться, поскольку мы позволяем пользователю редактировать текст, и я хочу, чтобы он отображался только как пробел.

Ответы [ 2 ]

1 голос
/ 13 августа 2011

Использование JSONLint Я вижу, что ваш JSON недействителен. Вы должны избегать обратной косой черты (\), когда они не являются частью допустимых escape-последовательностей JSON (\", \\, \/, \b, \f, \n, \r, \t, \u<4-digit-hex>).

В этом случае значение post_content недопустимо, поскольку имеет последовательности типа \: и \#. Изменение его на следующее должно решить проблему (конечно, вам придется исправить свой код на стороне сервера, чтобы правильно экранировать ответ JSON)

{
    "items": [
        {
            "id": "671",
            "post_title": "Seche Vite Dry Fast Top Coat",
            "post_content": "<span style=\"color\\: \\#ff0000\\;\"><strong>Roy Recommends:</strong>  Edith, our in-house nail expert, swears by this product.  No manicure or pedicure is complete without adding this top coat as the finishing touch.</span>\u000d\u000a\u000d\u000aSeche Vite™ dry fast top coat is widely acknowledged as the world\\'s finest top coat.  Specially formulated to penetrate through nail lacquer to the base coat forming a single solid coating over the nail plate for a much more durable finish. Guaranteed not to yellow while leaving nails silky, stronger and resistant to chipping and peeling.\u000d\u000a\u000d\u000a&nbsp;",
            "post_excerpt": "",
            "post_status": "publish",
            "post_parent": "0",
            "parent_sort_id": "671",
            "prod_meta_data_key": "_wpsc_product_metadata",
            "category": "Roy Recommends,Nail Care",
            "_wpsc_price": "10",
            "_wpsc_special_price": "0",
            "_wpsc_sku": "",
            "_wpsc_stock": "4",
            "unpublish_when_none_left": "1",
            "weight": 8.5,
            "weight_unit": "ounce",
            "height": "0",
            "height_unit": "in",
            "width": "0       ",
            "width_unit": "in",
            "length": "0",
            "length_unit": "in",
            "local": "0",
            "international": "0",
            "no_shipping": "0"
        }
    ],
    "totalCount": "1"
}
0 голосов
/ 17 августа 2011

Я попробовал это в Chrome.Только следующая последовательность в строке JSON не может быть проанализирована eval () в Javascript.Другие в порядке.

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