1

type の応答では、変数でapplication/x-javascript必要な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。誰か助けて。

4

3 に答える 3

2

まず、ターゲットにしたオブジェクトにアクセスする必要があります。

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

しかし、あなたが望む出力は私がこのテキストだけが欲しいということです

html変数にはそのテキストは含まれていませんが、探しているコンテンツがスパン内のテキストであるhtmlが含まれています

プロジェクトにjQueryを含めることに同意すると、この方法でそのコンテンツにアクセスできます

var text = $(html).text();
于 2013-02-25T21:00:20.150 に答える
1

まず、必要なテキストの文字列を取得するために、そのデータをもう少し具体的にする必要があります。

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

次に、その文字列を検索して、必要なデータを抽出する必要があります。それは、得られる応答の規則性に大きく依存します。いずれにせよ、おそらく正規表現を使用して、応答で取得した文字列を解析する必要があります。

この場合、<span>文字列内の要素内のテキストを取得しようとしています。すべての応答がそうである場合は、次のようにすることができます。

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

これは、他の HTML タグを含まない 1 つの span タグの開始と終了内のテキストを非常に具体的に探します。

ここでの式で注目すべき主な部分は です([^<]*)。これは、開始山括弧ではない任意の文字をキャプチャします<<span>この周りのすべてが、オプションの属性を持つのインスタンスを探しています。これは、一致を返すために文字列に対してexec実行するメソッドであり、最初で唯一のキャプチャ (タグ間のテキストなど) を提供します。temp[1]<span>

より具体的なことを行う方法を見つけるには、 RegExpについてさらに読む必要があります(または、探している応答のパターンに関するより具体的な情報を質問に提供します)。ただし、この種の作業 (テキストの解析、パターンと一致の検索) を行う場合は、通常、正規表現について読む価値があります。最初は少し混乱するかもしれませんが、正規表現は非常に簡潔で強力な方法だからです。 .

于 2013-02-25T21:03:15.470 に答える
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?に関するこの回答に対する称賛@Tim Down ?

于 2013-02-25T21:16:21.530 に答える