0

我一直在试图弄清楚这似乎是永远的事情。我的 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 文件的顶部声明了它们)。

请停下来!

4

4 回答 4

1

Jquery.post()

数据

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

PlainObject:对于一个方法的正常操作,你必须传递一个像这样的对象:

{ 'someKey' : 'someVal' , 'sK2' : 'sV2' }
于 2013-03-23T01:31:26.973 回答
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

于 2013-03-23T01:00:38.960 回答
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;
    }
);
于 2013-03-23T01:00:59.417 回答
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...
}
于 2013-03-23T07:44:32.280 回答