2

私はおそらく非常に単純なjQueryの質問があります-おそらく少し欠けています。

PHPスクリプトからJSON形式でデータをロードするボタンがあります。

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
function showLastGame(id) {
        $('#top').load('http://preferans.de/cards-json.php?id=' + id + '&limit=1');
}
</script>

..。

Show your last game &raquo;
<input type="button" onclick="showLastGame('DE13370')" value="Show">

それはうまくいきます-ボタンがクリックされた後、ロードされたJSONデータを見ることができます。

しかし、実際には、ロードされたデータをJavaScript関数に渡したいと思います(dataTablesから1つを再利用しようとしています)。これにより、HTMLテーブルが文字列として返されます。

function renderGame(cardsTable, nTr) {
        var aData   = cardsTable.fnGetData(nTr);
        //console.dir(aData);
        // .... HTML table constructed here....
        return str;
}

これを行う方法を教えてください。

そして、その生成された文字列を#topdiv内に配置する方法は?

4

3 に答える 3

2

jQuery.ajax()ではなく、通常の呼び出しを使用し.load()ます。

$.ajax({
    url: '/cards-json.php',
    data: {
        id: id,
        limit: 1
    },
    dataType: 'json',
    ...
}).done(function(data) {
    // data is your JSON - use it however you want here
    var topHtml = renderGame(arg1, arg2);
    $('#top').html(topHtml);
});

この関数は、要素renderGameの HTML コンテンツを返す関数であると仮定しました。#topそうでない場合は、それを正しい関数呼び出しに変更します。

于 2013-01-23T14:29:33.430 に答える
2
<script type="text/javascript">
function renderGame(cardsTable, nTr, html) { // added html to be passed so it can be manipulated further

        // .... HTML table constructed here....
        // using things like `var part = $('selector',HTML_STRING)` you can extract parts
        // to modify, and build a string for the table with them

        var part1 = $('span.menu',html).eq(0) // get the first `span` with class `menu` from the html string passed and store in `part1`
        ... etc ...

        str = "<table><tr><td>" + part1 + "</td></tr></table>" // etc...

        return str;
}
function showLastGame(id) {
    // use `$.get` and a callback function after it got data
    $.get('/cards-json.php?id=' + id + '&limit=1',function(d){
        // d is a string containing the response of the `get` request
        var table = renderGame(???,???) // <~ not sure what variables your function takes
        // set the HTML of the target element
        $('#top').html(table);
    });
}
</script>
于 2013-01-23T14:34:43.690 に答える
1

行く方法はjQuery.getJson()を使うことだと思います

例、あなたのコードに基づく:

function showLastGame(id) {
    $.getJSON('/cards-json.php?id=' + id + '&limit=1', function(data) {
        var html = '<ul>';
        $.each(data, function(key, val) {
            // Whatever you what to do, eg.
            html = html + '<li>' + key + ': ' + val + '</li'>);
        });
        html = html + '</ul>';
        $('#top').html(html);
    });
}
于 2013-01-23T14:34:35.903 に答える