2013-02-25 4 views
1

В ответе типа application/x-javascript Я собираю требуемую часть JSON в вари. Ниже JSON -Невозможно правильно разобрать JSON

{ 
    "__ra":1, 
    "payload":null, 
    "data":[ 
     [ 
     "replace", 
     "", 
     true, 
     { 
      "__html": "\u003Cspan class=\"highlight fsm\" id=\"u_c_0\">I want this text only\u003C\/span>" 
     } 
     ] 
    ] 
} 

Из ссылок, которые я получил от Stackoverflow, я могу забрать содержимое внутри data в следующем ПУТЬ

var temp = JSON.parse(resp).data; 

Но моя цель состоит в том, чтобы получить только текстовая часть __html значение, которое составляет I want this text only. Кто-нибудь помогите.

+0

сделать 'console.log (TEMP)' (если вы на браузер, который обеспечивает это), и вы увидите, что вам нужно сделать. –

+4

Похоже, он должен быть: 'JSON.parse (соответственно) .data [0] [3] ._ html' – RayViljoen

+0

@MarcB: console.log (температура) = [ [ "заменить", "", правда , { "__html": "\ u003Cspan класс = \" изюминкой FSM \ "ID = \ "u_c_0 \"> Я хочу, чтобы этот текст только \ u003C \/SPAN>" } ] ] –

ответ

1

Чтобы поставить все это вместе:

var html = JSON.parse(resp).data[0][3]._html; 
var div = document.createElement("div"); 
div.innerHTML = html; 
var text = div.textContent || div.innerText || ""; 

Престижность @ Тим вниз для этого ответа на кроссбраузерной innerHTML: JavaScript: How to strip HTML tags from string?

+0

Хорошее решение, отличное от jQuery ... Но это зависит от того, ищет ли вопросик только текст в определенном диапазоне или если текст лишен HTML. Это еще не ясно. Если бы он был * ясен, вопросик получил бы +1 для меня, и если бы это был общий HTML-дескриптор, который он использовал, это тоже получило бы +1. И смутное чувство сожаления, что я не думал об этом сначала! :-) – guypursey

+0

Это правда .. @ Ravi Joshi: Не могли бы вы объяснить, является ли это конкретным тегом span или просто innerHTML в целом вы после? – RayViljoen

+0

Мне нравится, как вы получаете «текст» ... Круто .... Спасибо человеку ... [Это] (http://stackoverflow.com/questions/5002111/javascript-how-to-strip-html-tags -from-string) является удивительным. –

2

Во-первых, вы должны получить доступ к объекту вы целенаправленную:

var html = JSON.parse(resp).data[0][3]._html; 

Но тогда выход вы хотите Я хочу, чтобы этот текст только

HTML переменная не containt этот текст но некоторые html, где контент, который вы ищете, является текстом внутри span

Если вы принимаете inc ЛУДИНГ JQuery в вашем проекте вы можете получить доступ, что контент таким образом

var text = $(html).text(); 
+0

Спасибо, я могу пойти без jQuery? В этом случае, как я могу захватить текст? –

+1

Вам не нужно использовать jQuery, если вы еще этого не сделали. – guypursey

+0

См. Принятый ответ здесь для решения, отличного от jQuery: http://stackoverflow.com/questions/5002111/javascript-how-to-strip-html-tags-from-string – RayViljoen

1

Сначала вам нужно быть немного более конкретными с этими данными, чтобы получить в строку текста, который вы хотите:

var temp = JSON.parse(resp).data[0][3]['__html']; 

Затем вам нужно будет найти эту строку, чтобы извлечь нужные данные. Это будет во многом зависеть от регулярности ответа, который вы получаете. В любом случае вам, вероятно, понадобится использовать регулярное выражение для анализа строки, которую вы получите в ответе.

В этом случае вы пытаетесь получить текст внутри элемента <span> в строке. Если это имело место для всех ваших ответов, вы могли бы сделать что-то вроде:

var text = /<span[^>]*>([^<]*)<\/span>/.exec(temp)[1]; 

Это очень определенно выглядит текст в открытии и закрытии одного диапазона тега, который не содержит никаких других тегов HTML.

Основная часть, на которую нужно обратить внимание, - это ([^<]*), которая будет захватывать любой символ, который не является угловым кронштейном, <. Все вокруг этого ищет экземпляры <span> с необязательными атрибутами. exec - это метод, который вы выполняете в строке temp, чтобы вернуть совпадение, и [1] даст вам первый и единственный захват (например, текст между тегами <span>).

Вам нужно узнать больше о RegExp, чтобы узнать, как сделать что-то более конкретное (или предоставить более конкретную информацию в вашем вопросе о шаблоне ответа, который вы ищете). Но, как правило, стоит прочитать регулярные выражения, если вы собираетесь выполнять такую ​​работу (разбор текста, поиск шаблонов и совпадений), потому что они очень сжатые и мощные способы сделать это, если сначала немного запутать ,

Смежные вопросы