Php 解析简单JSON数组时出现的问题

Php 解析简单JSON数组时出现的问题,php,javascript,jquery,html,Php,Javascript,Jquery,Html,我一直想弄明白这似乎是永远的。我的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]

我一直想弄明白这似乎是永远的。我的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文件的顶部声明了它们)


普利斯,停

控制台返回对象数组

console.log($.parseJSON(数据[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,您试图像访问对象一样访问字符串

试试这个

$.post("get.php",
    {w:wname},
    function(data) {
        var json = $.parseJSON(data)[0];
        was = json.was;
        wcc = json.wcc;
        wbdmin = json.wbdmin;
        wbdmax = json.wbdmax;
    }
);
:

数据

类型:PlainObject或String 随请求一起发送到服务器的普通对象或字符串

普通对象: 对于方法的正常操作,必须传递以下对象:

{ 'someKey' : 'someVal' , 'sK2' : 'sV2' }

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...
}

发布的答案是正确的,除此之外,您还可以使用
},'json')
将返回的数据自动解析为json。