2
$(document).ready(function() {
    $('#pricingEngine').change(function() {
         var query = $("#pricingEngine").serialize();
         $('#price').fadeOut(500).addClass('ajax-loading');
         $.ajax({
             type: "POST",
             url: "index.php/welcome/PricingEngine",
             data: query,
             dataType: 'json',
             success: function(data)
             {
               $('#price').removeClass('ajax-loading').html('$' + data.F_PRICE).fadeIn(500);
               $('#sku').attr('value') = (data.businesscards_id);
             }
         });
    return false;
   });
});

非表示のフォーム フィールドの値として #sku を設定する必要があります (上記の jQuery コードで正しく行っているかどうかはわかりません。

<input type="hidden" name="sku" id="sku" value="*/PUT VAR VALUE HERE/*" />

F_PRICEまた、をに渡す必要があり#price divます。

Chrome のコンソールには、JSON 応答が次のように表示されます。

[
 {
  "businesscards_id":"12",
  "X_SIZE":"1.75x3",
  "X_PAPER":"14ptGlossCoatedCoverwithUV(C2S)",
  "X_COLOR":"1002",
  "X_QTY":"250",
  "O_RC":"NO",
  "F_PRICE":"12490",
  "UPS_GROUND":"12000",
  "UPS_TWODAY":"24000",
  "UPS_OVERNIGHT":"36000"
 }
]

それでも、価格ボックスに「未定義」しか表示されません。ここでの理由は何ですか?

4

2 に答える 2

2

JSON として返される構造[]は、対象のオブジェクトである 1 つの要素を含む配列{}です。配列インデックスを介してアクセスする[0]

// Access the array-wrapped object via its [0] index:
$('#price').removeClass('ajax-loading').html('$' + data[0].F_PRICE).fadeIn(500);
// Likewise here, and set the value with .val()
$('#sku').val(data[0].businesscards_id);

.shift()配列から最初の要素を取得して、それをそのまま使用することもできます。

// Pull the first element off the array, into the same variable
// WARNING: Use a different variable if the array has multiple elements you need to loop over later.
// You *don't* want to do it this way if the array contains multiple objects.
data = data.shift();
$('#price').removeClass('ajax-loading').html('$' + data.F_PRICE).fadeIn(500);
$('#sku').val(data.businesscards_id);
于 2012-11-03T20:54:01.093 に答える
0

これが適切な方法です (最善)

$('#sku').val(data.businesscards_id);

attrの使用を主張する場合、これは機能するはずです

$('#sku').attr('value', data.businesscards_id);
于 2012-11-03T20:53:51.947 に答える