0

我正在尝试访问从 python 脚本发送的 json 数据。在我的 python 脚本中,我以以下格式将数据发送到我的 Ajax 成功函数:

def main():
"""Create instance of FieldStorage""" 
dat = cgi.FieldStorage( keep_blank_values = True ) 

Start_date = "07/01/2013"
dc = ['las','sjc']
sys = "All"



result = [{"startdate":Start_date,"datacenter":dc,"system":sys}]

res = json.dumps(result)

print res

现在在javascript中,我试图访问我的Json的各个值,但我在console.log中收到一条消息“未定义”。但是数据打印正确,我无法访问我的 JSON 的单个对象。

             $.ajax({
                    type: 'get',
                    url: '/cgi-bin/worlddata.py',
                    data: $(form).serialize(),


                    success: function(data, status) {


                      var response = JSON.parse(data);
                      console.log("THe json is "+response.datacenter); //prints undefined
                      console.log("result is "+data); // prints result is [{"startdate": "07/01/2013", "system": "All", "datacenter": ["las", "sjc"]}]

                      console.log("The status is "+status); // prints The status is success
                      console.log(data.datacenter); // prints undefined

我的问题是如何访问 response.message 或 data.message?有人可以指出我做错了什么吗?

4

2 回答 2

0

尝试使用 jquery 的 getJSON 函数。

$.getJSON('/cgi-bin/worlddata.py', {
    $(form).serialize()
}).success(data, status) {
   success stuff goes here
});

另外,如果你想使用 ajax,我相信你也必须设置 dataType: "json" 。

于 2013-07-30T22:43:54.777 回答
0

您正在序列化一个包含对象的数组;在 python 端 [] 是多余的。删除它们,然后在 javascript 中,您可以访问 result.system、result.startdate 和 result.datacenter 等值

result = {"startdate": Start_date,"datacenter": dc,"system": sys}
print json.dumps(result)

接着

var response = JSON.parse(data);
console.log("The json startdate is " + response.startdate); //prints undefined
于 2013-07-30T22:45:09.580 回答