Jquery 访问json对象值时出现问题
我遇到了一个问题控制台。记录从jQueryAjax调用发送回脚本的json对象的值 剧本:Jquery 访问json对象值时出现问题,jquery,json,Jquery,Json,我遇到了一个问题控制台。记录从jQueryAjax调用发送回脚本的json对象的值 剧本: for(i=0; i<IDs.length; i++) { var vendor = IDs[i]; $j.ajax({ type: "POST", url: "/ajax_calls/updatePrices.php", data: { 'vendorID':
for(i=0; i<IDs.length; i++)
{
var vendor = IDs[i];
$j.ajax({
type: "POST",
url: "/ajax_calls/updatePrices.php",
data: { 'vendorID': vendor, 'product_id': product_id}
}).done(function(data) {
console.log('The data is ' + data);
var basePrice = simpleArray[vendor][colorSelected];
//if(data.tier2_range_start[i])
console.log('Range start is data.tier2_range_start: ' + data.tier2_range_start);
if (qty < data.tier2_range_start){
simpleArray[vendor][colorSelected]= basePrice * qty;
}
else if (qty > data.tier2_range_start){
simpleArray[vendor][colorSelected]= (basePrice * qty) * data.tier2_discount;
}
else if (qty > data.tier3_range_start){
simpleArray[vendor][colorSelected]= (basePrice * qty) * data.tier3_discount;
}
else if (qty > data.tier4_range_start){
simpleArray[vendor][colorSelected]= (basePrice * qty) * data.tier4_discount;
}
else if (qty > data.tier5_range_start){
simpleArray[vendor][colorSelected]= (basePrice * qty) * data.tier5_discount;
}
else{
console.log('Something went wrong');
}
$j('.details'+vendor+ ' .priceBlock').empty();
$j('.details'+vendor+ ' .priceBlock').append('<span>'+simpleArray[vendor][colorSelected]+'</span>');
});
}//end for
为什么data.tier2\u range\u start未定义?您的问题可能在于
数据[vendor]。tier2\u range\u start
如果从服务器得到的所有响应与示例的形式相同([Array,Array,Object]
),则只有当供应商=2
时,您的代码才会起作用。否则,您将尝试访问数组中不存在的成员或访问不存在的元素
因此,您可以检查使用
IDs
中的值作为索引是否真的是您想要的;在我的jquery中。有人知道为什么吗?您需要告诉jQuery返回的数据是json,除非您在响应中放入适当的mime头,否则jQuery怎么知道
PHP开头的某个地方:header('Content-type:text/json')代码>
在ajax中:
...
data: { 'vendorID': vendor, 'product_id': product_id},
dataType: "json",
...
那么jQuery就是在为您做这项工作。你的痕迹应该是这样的
[15:06:13.397] The data is Object object
在请求中,什么是IDs
?您的数据已经是一个数组,因此不需要JSON.parse。不过,我不太理解您返回的json。这是一个混合值的数组,前两个值是空数组,第三个是表示供应商的对象。我需要从数据库调用的每个供应商ID的值(不止一个SQL请求),因此我尝试回显一个矩阵数组,并将其作为json对象访问。我不确定要更改什么,也不确定此时如何访问。试图避免为每个供应商单独调用ajaxID@ExplosionPillsID可以是[5,4]例如,好吧,我完全改变了一切,对每个ID进行单独的ajax调用,但我仍然无法访问值。请参见上面的更改!我修改了所有代码,一次只返回一个数据集。见上文。为什么我不能用data.tier2\u range\u访问值?返回数据时开始?Php中的json\u encode函数不起作用?lol.@CaitliNHavener:您将如何将从服务器检索到的json字符串传递回服务器,以便对其进行json编码?它位于需要将json字符串转换为JS对象的客户端。这通常是由jQuery Ajax完成的,当jQuery知道数据是json时。[PHP Object]=>json_encode()=====send===>Browser/JS(jQuery,eval,json.parse(),…)=>JavaScript Object==>“Object.property”,除非用dataType
jQuery尝试猜测它。也许他只是没认出那是JSON?
...
data: { 'vendorID': vendor, 'product_id': product_id},
dataType: "json",
...
[15:06:13.397] The data is Object object