0

xmlスクリプトをJavaで解析するためのいくつかの方法をすでに試しましたが、理解できません。

2つのファイルがあります。mysql_get.phpは、呼び出された場合にXMLスクリプトを返します。post_alert.htmlは、以下に示すように、jQuery $ .post(..)を介してmysql_get.phpからXMLスクリプトをフェッチしています。

function init2() {

    var response;
    $.post("mysql_get.php", function (data) {
        response = data;
        alert(response)
    });
    var xml;
    xml = $.parseXML(response);
    alert($(response).find("item").each(function () {
        $(this).attr("id")
    }));
}

init2()を呼び出すボタンを押すと、アラートポップアップで確認できるように、xmlスタイルの応答メッセージが表示されます。

<?xml version="1.0" encoding="uft-8"?>
<root>
<collection collection="locationPoint">
    <item id="1">
        <latitude>23.4442</latitude>
        <longitude>51.2341</longitude>
    </item>

    <item id="2">
        <latitude>2849.24</latitude>
        <longitude>213.132</longitude>
    </item>
</collection>

しかし、正しい解析を望んでいたので、アラートはさらに「1」をポップアップしません。

私は何が間違っているのですか?

4

3 に答える 3

1

ここにいくつかのことがあります:xmlファイルの1行目はUFT-8ではなくUTF-8を読み取る必要があります2行目は削除する必要があります。そうでない場合は、終了タグ、無効なxmlがあることを確認してください

次に、私が役立つことを願っている小さな例を示します。

<html>
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
    </head>
    <body>
        <div id="dc"></div>
    </body>
    <script type="text/javascript">
        $(document).ready(function() {
            $.ajax({
                url: 'mysql_get.php',
                type: 'post',
                dataType: 'xml',
                success: function(data) {
                    $(data).find('item').each(function () {
                        $('#dc').append($(this).attr('id') + '<br/>')
                    });
                },
                error: function(data) {
                    $('#dc').html('error');
                }
            });
        });
    </script>
</html>
于 2012-04-03T23:47:35.820 に答える
1

AJAXのAは非同期を表します。後のコードは、応答状態に関係なく、呼び出さ$.post(..)れた直後に実行されます。$.post

呼び出し内var xml..で-codeを移動する必要があります。 また、IDを返さずに、要素のみをループします。IDで構成されるオブジェクトを作成し、その配列表現を取得するために使用します。$.post
.each().map().toArray()

function init2() {
    $.post("mysql_get.php", function(data) {
        var response = data;
        var xml = $($.parseXML(response));
        alert(response.find("item").map(function () {
            return $(this).attr("id")
        }).toArray() );
    });
}
于 2012-04-03T22:57:17.220 に答える
0

jQueryを使用したXML操作を見てください

于 2012-04-04T00:20:42.497 に答える