1

jQueryの関数を使用しreplaceWith()て Web ページを更新しています。データベースからデータを抽出して HTML コードを作成する C# Web サービス プログラムからデータを受け取ります。大量のデータを置き換える場合を除いて、正常に動作します。うまくいかない例では、Web ページのコードを 39000 バイトのデータに置き換えます。その後、スパンをクリックして JavaScript 関数を呼び出すと、リンクが機能しません。replaceWith()関数で使用するデータのサイズに制限はありますか? 私が置き換えているhtmlコードは次のようになります。

<td align=left valign=top>
<div id="showitems" class="showitems" style="display:inline; float:left"></div>
 </td>

JavaScript コードは次のようになります。

function ShowDinerItems() {

            var gps = document.getElementById("selectdiner").value;
            var pos = gps.indexOf(";");
            var len = gps.length;
            var latitude = document.getElementById("Hiddenlat").value;
            var longitude = document.getElementById("Hiddenlng").value;
            var dinerkey = gps.substring(0, pos);
            PageMethods.CallShowDinerItems(dinerkey, latitude,longitude,               OnShowDinerComplete, OnShowDinerError, dinerkey);
        }

    function OnShowDinerComplete(result) {
        var htmlcode = result[0];
        if (result == 'none') {
                document.getElementById("Message").value = "Search returned no items";

            }
            else {
                var htmlcode = result[0];
                htmlcode = "<div id=\"showitems\" class=\"showitems\"         style=\"display:inline\">" + htmlcode + "</div>";
                $('.showitems').replaceWith(htmlcode); // size of htmlcode is 39849 bytes
                var locations = result[1].split(";");
                var lat = locations[0];
                var lng = locations[1];
                markDiner(lat, lng, "", 'map_canvas');

            }
        }

jquery を使用して Web ページを作成する理由は、ページのリロードを避けるためです。C# プログラムで webdata コンテンツを簡単にプログラミングできますが、これはより効率的かもしれませんが、Web サイトの所有者が指示するように、ページのリロードは避ける必要があります。与えられた推奨事項を試してみます。

注:次のコードを使用して機能させました。

 $('.showitems').html(result[0]);

.text を使用すると、HTML データではなく生データが表示されるため、機能しません。貢献してくれた人々に感謝します。

4

1 に答える 1

0

正直に言うと、あなたはここでこれについて間違った方向に進んでいると思います。

jQueryでプロパティを簡単に変更できるのに、ReplaceWithを使用して一致したタグを完全に上書きしているように思えます。

例えば:

var htmlcode = result[0];
htmlcode = "<div id=\"showitems\" class=\"showitems\"         style=\"display:inline\">" + htmlcode + "</div>";
$('.showitems').replaceWith(htmlcode); // size of htmlcode is 39849 bytes

これは簡単に変更できます:

$('.showitems').css('float','none').text(result[0]);

ところで、showItems はいくつあるのでしょうか? C# 呼び出しから返される結果の数と比較してどうすればわかりますか?

編集 2: 申し訳ありませんが、CSS 表示属性が実際には変更されていないことに気付きませんでした。

于 2012-04-13T01:34:56.033 に答える