-1

html()は、divなどの非フォーム要素にコンテンツを設定するために使用する必要があります。**この質問には何度か回答がありましたが、私は気づいていませんでした。

$ .ajax呼び出しからコメントを取得した後、値を設定しようとしています。commentOutputとcommentSpanの値を警告すると、正しいデータが表示されています。ただし、これらのコメントの値をスパンに設定しようとすると、表示されず、生成されたソースにも表示されません。

これがjavascriptです。コンソールでPOSTからの戻りを確認できます。クリック時に警告したので、スパンに対して取得している値も確認できます。

これを呼び出すには、猫の最初の写真をクリックするだけです。この時点で他の人はコメントを持っていません。

var ajaxOptions = {
    type: 'POST',
    dataType: 'json',
    url: 'ajax/comments.php',
    data: { id: photoID, action: 'GetComments' },
    success: function(data) {

            for(i=0; i<data.length; i++) {

                    var commentOutput = '<div><h4>'+data[i].comment_user+' says:</h4>';
                    commentOutput += '<span>'+data[i].comment_msg+'</span>';
                    commentOutput += '</div>';
                    var commentSpan = '#photo' + data[i].photo_id + ' .comments';
                    $(commentSpan).val(commentOutput);
                    $(commentSpan).delay('200').css('display','block');
            }

    }
};

どんな助けでも大歓迎です、

乾杯、

コーディ

4

2 に答える 2

5

メソッドval()は、、および要素に使用さinputselectますtextarea

html()代わりにまたはtext()メソッドを使用する必要があります。

NB:それはほとんど同じ質問に対する私の最近の答えの正確なコピーです。いくつかの検索を使用して解決策を見つけようとしましたか?

于 2012-07-02T22:40:53.927 に答える
3

あなたが欲しい.html()、ではなく.val()

$(commentSpan).html(commentOutput);

また、サーバーがコメントデータをHTMLエスケープしていない場合は、スクリプトで実行する必要があります。

function safe(s) {
  return s.replace(/&/g, '&amp;').replace(/>/g, '&gt;').replace(/</g, '&lt;');
}

// ...


var commentOutput = '<div><h4>'+ safe(data[i].comment_user) + ' says:</h4>';
commentOutput += '<span>'  + safe(data[i].comment_msg) + '</span>';
于 2012-07-02T22:39:54.130 に答える