2013-03-23 75 views
0

我一直在试图弄清楚什么看起来像永远。我的PHP工作正常。作为一个例子,它返回以下,如果我从我的选择下拉列表中选择“格罗夫弓”:解析简单JSON数组问题

[{"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()控制台换货政... RNS被张贴由我get.php文件相同的结果:

[{"wtype":"Grove Bow","was":"1.55","wcc":"5","wbdmin":"12","wbdmax":"37"}] 

我需要访问阵列的这些元素,你可以通过我的努力来存储他们看到的变量(不用担心,我声明他们早些时候在我的.js文件的顶部)。

Pliss halp!

+1

发布的答案是正确的,除此之外,您还可以使用'},'json');'将数据返回自动解析为json。 – Ohgodwhy 2013-03-23 01:01:15

回答

0

控制台将返回对象

console.log($.parseJSON(data[0]));的阵列会给你你的对象

Additionaly,您应该访问您的数据是这样的:

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

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; 
    } 
); 
1

Jquery.post()

数据

类型:PlainObject或字符串 一个普通对象或字符串被发送到服务器与请求。

PlainObject: 一种方法的正常运行,必须通过有对象,如:

{ 'someKey' : 'someVal' , 'sK2' : 'sV2' } 
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... 
}