-3

x関数に引数を渡すにはどうすればよいstartTableですか? 著者別に結果をフィルタリングしたいのですが、これで数日間立ち往生しています...

$(document).ready(function () {
    var result;
    alert('ajax works');
    $.ajax({
        type: "GET",
        url: "xml.php",
        cache: true,
        dataType: "xml",
        success: function (xml) {

            function startTable(x) {
                $(xml).find("item").each(function (index) {
                    var author = $(this).find('author').text();
                    var title = $(this).find('title').text();
                    var rating = $(this).find('rating').text();
                    var review = $(this).find('review').text();
                    // Checks the condition
                    if (author == x) {
                        $('#input1').append('<tr><td>Title: <b>' + title + '</b></td><td>Rating: <b>' + rating + '</b></td></tr><tr><td colspan="2">' + review + '</td></tr>');
                    }
                });
            };

        }
    });
});

function startFilter() {
    var x = document.getElementById('inputFilter').value;
    // Passing parameter
    startTable(x);
};

何か案は?前もって感謝します。

4

2 に答える 2

0

コードを作り直してajaxを呼び出し、それを使用しました-すべて実行によって開始されました。これは少し不格好ですが、作業することができます。

function startTable(x, xml) {
    $(xml).find("item").each(function (index) {
        var xmlItem = $(this);
        if (xmlItem.find('author').text() == x) {
            var thisItem = {
                title: xmlItem.find('title').text(),
                rating: xmlItem.find('rating').text(),
                review: xmlItem.find('review').text()
            };
            $('#input1').append('<tr><td>Title: <b>' + thisItem.title + '</b></td><td>Rating: <b>' + thisItem.rating + '</b></td></tr><tr><td colspan="2">' + thisItem.review + '</td></tr>');
        }
    });
}

function getData(x) {
    var result;
    alert('ajax works');
    $.ajax({
        type: "GET",
        url: "xml.php",
        cache: true,
        dataType: "xml",
        success: function (xml) {
            startTable(x, xml);
        }
    });
}

function startFilter() {
    var x = document.getElementById('inputFilter').value;
    // Passing parameter
    getData(x);
}

//get started
startFilter();

今は私だけかもしれませんが、サーバーで結果をフィルタリングすることもできます (「x」値を渡して、必要なものだけを送り返しますが、それはあなた次第です.

于 2013-04-15T12:17:18.737 に答える
0

外部からローカル関数を呼び出すことはできません。あなたがすべきことは、成功のコールバック関数内で応答データをフィルタリングすることです

$.ajax({
    type: "GET",
    url: "xml.php",
    success: function (response) {
      render_and_filter(response);
    }
});

function render_and_filter(data){
 // ... append or update your data to document here ...
}
于 2013-04-15T12:04:43.610 に答える