0

フォームを送信し、jQuery ajax を介してテーブルに返されたデータを取得しています。テーブル内の td の 1 つに xml が含まれているため、フォーマットする必要があります。自分のページに表示することはできますが、テキストだけのようで、xml タグはないようです。私はいくつかのレガシーコードを扱っており、あまり余裕がありません。

返された HTML

<table border=1>
<tr>
    <td>Field Name</td>
    <td>Field Value</td>
</tr>
<tr>
    <td>SuccessFlag</td>
    <td>True</td>
</tr>
<tr>
    <td>ResponseMessage</td>
    **<td><?xml version="1.0" encoding="utf-16"?>**
        <License>
            <CustomerID>Bob</CustomerID>
            <License>XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX</License>
            <Log>Created by lt@email.com on December 6, 2012, 1:09 pm Cancelled by b@email.com on December 6, 2012, 1:09 pm</Log>
            <ExpirationDate>2012-12-06</ExpirationDate>
        </License>
    </td>
</tr>

太字の行は、テーブルの 5 番目の td であり、必要な xml が常に含まれています。以下のコードを使用すると、テキストを div にダンプするだけで、xml タグに基づいてフォーマットする必要があり、解析が機能しているかどうかわかりません。

$("#ButtonID").live('click',function(){
$("#FormID").validate({
            //are the errorContainer's helping here?
    errorContainer: "#responseDiv",
    errorLabelContainer: "#responseDiv tr",
    wrapper: "td",
            //are the errorContainer's helping here?
    submitHandler: function(form) {
        var dataString = $(form).serialize();
        $.ajax({
            type: $(form).attr('method'),
            url: form.action,
            data: dataString,
            clearForm: true,
            success: function(data) {
                var answer = $(data).find("td:eq(3)").text();
                var message = $(data).find("td:eq(5)").html();
                var xmlDoc = $.parseXML( message );
                var $xml = $( xmlDoc );

                if (answer==="True") {
                    $xml.each(function(){
                           $('#resultGenerate').show().html($(this).text());
                    });
                } else {
                    $('.processing').hide();
                    $('input[type="text"], input[type="password"]').val("");
                    $('#resultGenerate').show().html('<ul><li>' + answer + '</li><li>' + message + '</ul>');
                }
            }
        });
        return false;
    }
});
});
4

1 に答える 1

0

ようやくこれが機能するようになりました。GET リクエストを使用するのは簡単ですが、データが POST から返されると、少しトリッキーになります。これが私がやった方法です

$.ajax({
    type: $(form).attr('method'),
    url: form.action,
    data: dataString,
    clearForm: true,
    success: function(data) {
        var answer = $(data).find("td:eq(3)").text();
        var message = $(data).find("td:eq(5)").html();
        var $xml = $( message );

        if (answer==="True") {
            $xml.find('license').each(function(){
        var XXXCustomerID = $(this).find(XXXCustomerID').text();
                var XXLicense  = $(this).find('XXLicense').text();
                var Log  = $(this).find('Log').text();
                var ExpirationDate  = $(this).find('ExpirationDate').text();
        $("#resultGenerate").show().append($('<li><span class="ID">' + XXXCustomerID + '</span><span class="NTL">' + XXLicense + '</span><span class="Log">' + Log + '</span><span class="Exp">' + ExpirationDate + '</span></li>'));
                });
        } else {
                $('.processing').hide();
                $('input[type="text"], input[type="password"]').val("");
                }
            }
        });
于 2012-12-07T16:09:13.140 に答える