1

最終的に、AJAX を介してデータを渡し、JSON で返すことに成功しました。しかし、今は自分のページに表示する方法がわかりません。

ここに私のJSがあります:

$(function() {
    $( "#selectable" ).selectable({
        selected: updatefilters,
        unselected: updatefilters
    });   
    function updatefilters(ev, ui){
        // get the selected filters
        var $selected = $('#selectable').children('.ui-selected');
        // create a string that has each filter separated by a pipe ("|")
        var filters = $selected.map(function(){return this.id;}).get().join("\|");
        $.ajax({
            type: "POST",
            url: 'updatefilters',
            dataType: 'json', 
            data: { filters: filters },
            success: function(data){
                $('#board').replaceWith(data.content);
            }
        });
    }
});

私のモデルが実行された後、firebug で発見されたように、次のように表示されます。

[{"thread_id":"226","owner_id":"1","subject":"trying to create a HUGE body for thread testi","body":"Firstly, I think 45 characters is perfect for the heading. \n\nHowever, once the body gets huge, I assume that the \"preview\" is going to get a bit out of hand if not truncated. I have truncated code in place...but it doesn't seem to be working.\n\nI'll have to keep testing to ensure we can get it shrunk down to a few hundred characters so as to not completely screw up the page format\n\nyadda yadda yadda...yadda yadda yadda...and more yadda yadda yadda...\n\nBabble Babble Babble Babble Babble \n\nBabble Babble Babble ","timestamp":"2012-05-02 15:29:19","replystamp":"2012-05-02 15:29:53","last_post_id":"1","slug":"226-trying-to-create-a-huge-body-for-thread-testi","replies_num":"1","views":"19"},{"thread_id":"219","owner_id":"3","subject":"testing icons","body":"hellow world","timestamp":"2012-05-01 11:37:08","replystamp":"2012-05-01 11:37:08","last_post_id":"3","slug":"219-testing-icons","replies_num":"0","views":"3"},{"thread_id":"212","owner_id":"1","subject":"This thread is based off entertainm","body":"Yay","timestamp":"2012-04-25 14:07:55","replystamp":"2012-04-25 14:07:55","last_post_id":"1","slug":"212-this-thread-is-based-off-entertainment","replies_num":"0","views":"4"}]

div の「ボード」を、返された JSON 配列のデータに置き換える方法についてのアドバイスは、非常に役に立ちます。

4

2 に答える 2

1

件名と本文を含むテーブルにデータを表示するとします。あなたはこのように書くことができます:

success: function(data){
    var html = "<table>";
    for (i=0 ; i< data.length ; i++)
    {
        html += "<tr><td>" + data[i].subject + "</td><td>" + data[i].body + "</td></tr>";
    }
    html += "</table";
    $('#board').html(html);
} 

あなたはその考えを理解します。より良い解決策を調査す​​る時間があれば、テンプレートライブラリmustache.jsを調べることもお勧めします。これにより、テンプレートをデータから分離し、Javascriptを使用してHTMLとデータの醜い連結を排除できます。(ただし、より高度なソリューションの一種であり、単純なままにしておきたい場合があります。)Mustache.jsエンジンを使用すると、上記のように次のように記述できます。

var template = "{{#item}}<tr><td>{{subject}}</td><td>{{body}}</td></tr>{{/item}}";
var html = "<table>" + mustache.render(template, data) + "</table>";
$("#board").html(html);
于 2012-05-07T23:51:11.320 に答える
1
success: function(data){
 $.each(data, function(index, value) { 
    $('#board').append(index + ': ' + value + '<br/>'); 
 });
}

json から値に直接アクセスすることもできます

success: function(data) {
    $('#board').append('Thread Subject' + data.subject); 
}
于 2012-05-07T23:41:38.457 に答える