我一直试图想象一下这似乎是永远的。我的PHP工作正常。例如,如果我从选择下拉列表中选择“Grove Bow”,它将返回以下内容:
[{"wtype":"Grove Bow","was":"1.55","wcc":"5","wbdmin":"12","wbdmax":"37"}]
问题在于解析我写的.js文件中成功回调函数中的数据:
$.post("get.php",
{w:wname},
function(data) {
was = data[1].was;
wcc = data[2].wcc;
wbdmin = data[3].wbdmin;
wbdmax = data[4].wbdmax;
console.log($.parseJSON(data));
}
);
控制台返回我认为是空数组的内容:
[Object]
0: Object
length: 1
__proto__: Array[0]
如果我删除 $。parseJSON(),控制台将返回我的get.php文件发布的相同结果:
[{"wtype":"Grove Bow","was":"1.55","wcc":"5","wbdmin":"12","wbdmax":"37"}]
我需要访问数组的这些元素,因为我试图将它们存储为变量(不用担心,我之前在我的.js文件的顶部声明了它们)。
Pliss halp!
答案 0 :(得分:1)
数据强>
键入:PlainObject或String 使用请求发送到服务器的普通对象或字符串。
PlainObject: 对于方法的正常操作,您必须传递像:
这样的对象{ 'someKey' : 'someVal' , 'sK2' : 'sV2' }
答案 1 :(得分:0)
控制台返回对象数组
和console.log($.parseJSON(data[0]));
将为您提供对象
另外,您应该像这样访问您的数据:
var data=$.parseJSON(data);
var myObj=data[0];
var was=myObj.was;
var wcc=myObj.wcc;
//and etc
//or just data[0].was, data[0].wcc
当然更好的方式,如评论中所述,使用'json'数据类型,而不是手动调用parseJSON
答案 2 :(得分:0)
您正在尝试访问字符串,就像它是一个对象。
试试这个
$.post("get.php",
{w:wname},
function(data) {
var json = $.parseJSON(data)[0];
was = json.was;
wcc = json.wcc;
wbdmin = json.wbdmin;
wbdmax = json.wbdmax;
}
);
答案 3 :(得分:0)
jQuery ajax部分看起来很好, 在回调函数中尝试纯Javascript:
function(data) {
var json = JSON.parse(data);
console.log(json.wtype); //Grove Bow
console.log(json.was); //1.55
//and so on...
}