3

AJAX 呼び出しの後、次のような JSON データを取得します。

{
  "detailPrice": {
    "server": {
      "amount": "8",
      "usedPrice": "10",
      "discountPrice": "-1",
      "totalPrice": "9"
    },
    "network": {
      "amount": "8",
      "usedPrice": "10",
      "discountPrice": "-1",
      "totalPrice": "9"
    },
    "storage": {
      "amount": "8",
      "usedPrice": "10",
      "discountPrice": "-1",
      "totalPrice": "9"
    },
    "loadBalancer": {
      "amount": "8",
      "usedPrice": "10",
      "discountPrice": "-1",
      "totalPrice": "9"
    },
    "others": {
      "amount": "8",
      "usedPrice": "10",
      "discountPrice": "-1",
      "totalPrice": "9"
    },
    "support": {
      "amount": "8",
      "usedPrice": "10",
      "discountPrice": "-1",
      "totalPrice": "9"
    },
    "totalPrice": {
      "totalUsedPrice": "8",
      "totalDiscountPrice": "-2",
      "missedPrice": "10",
      "tax": "9",
      "otherDiscount": "-1"
    }
  }
}

これらのデータをビューに追加する必要があるため、次のようなコードを作成しました。

var serverpriceHTML = "총 " + result.detailPrice.server.amount + "대<br/>";
serverpriceHTML += "이용요금 " + result.detailPrice.server.usedPrice + "원&lt;br/>";
serverpriceHTML += "할인요금 " + result.detailPrice.server.discountPrice + "원&lt;br/>";
var serverTotalPriceHTML = result.detailPrice.server.totalPrice + "원";
$("#server_price").html(serverpriceHTML);
$("#server_totalprice").html(serverTotalPriceHTML);

var networkpriceHTML = "총 " + result.detailPrice.network.amount + "대<br/>";
networkpriceHTML += "이용요금 " + result.detailPrice.network.usedPrice + "원&lt;br/>";
networkpriceHTML += "할인요금 " + result.detailPrice.network.discountPrice + "원&lt;br/>";
var networkTotalPriceHTML = result.detailPrice.network.totalPrice + "원";
$("#network_price").html(networkpriceHTML);
$("#network_totalprice").html(networkTotalPriceHTML);

ご覧のとおり、重複したコードがたくさんあるので、それに関するプライベート関数を作成しようとしています。

問題は:

result.detailPrice.server.amount

データを取得するには、、、などに変更serverする必要がありますが、これを変更する方法がわかりません。networkstorageloadbalancer

私が好きなら:

function makeHTML(price, totalPrice, name) {
  var test = "result.detailPrice" + name + ".amount";
  var serverpriceHTML = "총 " + test + "대<br/>";
  serverpriceHTML += "이용요금 " + result.detailPrice.server.usedPrice + "원&lt;br/>";
  serverpriceHTML += "할인요금 " + result.detailPrice.server.discountPrice + "원&lt;br/>";  
  var serverTotalPriceHTML = result.detailPrice.server.totalPrice + "원";

  $(price).html(serverpriceHTML);
  $(totalPrice).html(serverTotalPriceHTML);
}

これは文字列テストを追加するだけです。これについて何か良い考えはありますか?

4

2 に答える 2

3

文字列値を使用する場合は、表記法を使用[]して値にアクセスします。

それ以外の

var test = "result.detailPrice" + name + ".amount";

試す

var test = result.detailPrice[name].amount;

変数値を置き換えたい場合、ドット表記は機能しません。

簡単な例

var obj = {
       "ball" : "bat"
    };

var name = "ball";

// ドット表記を使用する場合

obj.name (Gives you undefined) (get を取得しようとしますkey = name) 変数名を置き換えません

// [] ブラケット表記

obj[name] (Gives you bat) 変数名を置き換えて値を取得します

于 2013-08-07T06:13:09.240 に答える
0

次のようなさまざまな変数値を指定できます。

//This will give you some private variables for following:-
var constants={
server=function(){return 0},
network=function(){return 1},
storage=function(){return 2},
loadBalancer=function(){return 3},
others=function(){return 4},
suport=function(){return 5},
totalPrice=function(){return 6}
}

次に、以下のような変数で JSON を取得できます。

次のように JSON を変更できます。

var jsonData= {
           "detailPrice":{
              {
                 "amount":"8",
                 "usedPrice":"10",
                 "discountPrice":"-1",
                 "totalPrice":"9"
              },
                {
                 "amount":"8",
                 "usedPrice":"10",
                 "discountPrice":"-1",
                 "totalPrice":"9"
              },
                {
                 "amount":"8",
                 "usedPrice":"10",
                 "discountPrice":"-1",
                 "totalPrice":"9"
              },
                {
                 "amount":"8",
                 "usedPrice":"10",
                 "discountPrice":"-1",
                 "totalPrice":"9"
              },
                {
                 "amount":"8",
                 "usedPrice":"10",
                 "discountPrice":"-1",
                 "totalPrice":"9"
              },
                {
                 "amount":"8",
                 "usedPrice":"10",
                 "discountPrice":"-1",
                 "totalPrice":"9"
              },
                {
                 "totalUsedPrice":"8",
                 "totalDiscountPrice":"-2",
                 "missedPrice":"10",
                 "tax":"9",
                "otherDiscount": "-1"
              }

           }
        }

そして、次のようにどこでも呼び出します:-

jsonData.detailPrice[constant.server];//For Server Details
jsonData.detailPrice[constant.network];//For Network Details

等々。これが役に立てば幸いです。

于 2013-08-07T06:28:04.313 に答える