1

キーと値のペアの配列を含む Cookie (LogSum) にアクセスする JQuery を使用して、id "LogInsert" の div レイヤーに html (listItems) を挿入しようとしています。配列 Cookie の一部の項目は、DOM に挿入された html と組み合わせる必要があります。

さまざまなイベントで呼び出される次のエラー関数スクリプトがあります。

      function SetLogSum() {
      var listItems = "";
      var Cooksplit = $.cookie('logSum').split(',');

      $.each(Cooksplit, function(key, val) {
      listItems += "<div class='loggedinDetail'>" +
        "<div class='loggedinImage'>" +
        "<img src=" + val.uPic + " alt=" + val.uFName + val.uLName + " /></div>" +
        "<div class='loggedinName'><span>" + val.uFName + "</span></div>" +
        "<div class='loggedinStatus'><span>" + val.uGroup + " • " + val.uContRev + "</span></div>" +
        "</div>" +
        "<div class='loggedinHistory'>" +
        "<div class='loggedinReviewCount' title='Reviews'><span>" + val.CntRev + " Reviews</span></div>" +
        "<div class='loggedinTripCount' title=''><span>" + val.CntBook + "</span></div>" +
        "</div>";
    }
    );
    $("#LogInsert").html(listItems);
    }

logSum Cookie には、次のような情報が保持されます。

uPic=avatar-male&uContRev=Contributor&uName=thedon&uGroup=Admin&uOP=0&uOA=0&uOH=0&uOI=0&uV=1&uP=0&uRv=0&uF=0&uCb=1&uPEC=0&uS=0&uC=UK&uL=en-US&uFName=Martin&uLName=Sansone&CntRev=6&CntBook=2

AJAX呼び出しで同じ構造を定期的に使用しているため、listItems部分が機能し、.htmlが挿入されることはわかっています。だから私の問題は、私がクッキーをどのように処理するかですが、その理由はわかりません。何か案は ?

4

2 に答える 2

1

ループでvalは、オブジェクトではなく文字列になりますが、オブジェクトとして扱っています。キャラクターのそれぞれを分割valし、&次にキャラクターのそれらの各ピースを分割=して、キーと値にする必要があります。次に、それらを使用して HTML フラグメントを作成します。

デバッガーを使用する場合 ( 2012 年にクライアント側のデバッガーを使用しないという言い訳はありません :-) )、これは を調べるとかなり明確になるはずvalです。

これは、デバッグも保証もされていない、どのように見えるかのスケッチですが、正しい方法で進むはずです:

$.each(Cooksplit, function(key, valStr) {
    var items = valStr.split("&"),
        val = {};

    // Build up an object in `val` using the keys and
    // values from this entry
    $.each(items, function(index, item) {
        var parts = item.split("=");
        val[parts[0]] = parts[1];
    });

    // ...use `val` as you were...
    listItems += /* ... */;
});

valそこで、内側のループを使用して、文字列のキーと値を使用してオブジェクトを構築するので、HTML フラグメントの構築コードはほとんど変更されません。

于 2012-07-27T08:40:05.470 に答える
1

次のように変換できます。

valueStr = "uPic=avatar-male&uContRev=Contributor&uName=thedon&uGroup=Admin&uOP=0&uOA=0&uOH=0&uOI=0&uV=1&uP=0&uRv=0&uF=0&uCb=1&uPEC=0&uS=0&uC=UK&uL=en-US&uFName=Martin&uLName=Sansone&CntRev=6&CntBook=2"

文字列を Object に変換します。ここで、キーはuPicuContRevuNameなどで、値はavatar-maleContributorthedonなどです。次のようになります。

var val = JSON.parse( '{"'+
                          valueStr.replace(/=/g,'":"')
                          .replace(/&/g,'","') + 
                       '"}');

次に、次のようにします。

listItems += "<div class='loggedinDetail'>" +
    "<div class='loggedinImage'>" +
    "<img src=" + val.uPic + " alt=" + val.uFName + val.uLName + " /></div>" +
    "<div class='loggedinName'><span>" + val.uFName + "</span></div>" +
    "<div class='loggedinStatus'><span>" + val.uGroup + " • " + val.uContRev + "</span></div>" +
    "</div>" +
    "<div class='loggedinHistory'>" +
    "<div class='loggedinReviewCount' title='Reviews'><span>" + val.CntRev + " Reviews</span></div>" +
    "<div class='loggedinTripCount' title=''><span>" + val.CntBook + "</span></div>" +
    "</div>";

デモ

于 2012-07-27T08:46:29.753 に答える