$(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"
}
]
然而,我只在价格框中得到'未定义'。这是什么原因?
答案 0 :(得分:2)
作为JSON返回的结构是一个数组[]
,其中包含一个元素,即您要定位的对象{}
。通过其数组索引[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);
答案 1 :(得分:0)
这是正确的方法(最好的)
$('#sku').val(data.businesscards_id);
如果你坚持使用attr,这应该可行
$('#sku').attr('value', data.businesscards_id);