【问题标题】:extract elements from Ajax-JSON从 Ajax-JSON 中提取元素
【发布时间】:2012-07-06 20:25:52
【问题描述】:

我精通 PHP,但我是 AJAX 的初学者,而 JSON 让我发疯。

我的 PHP 脚本提供了一个简单的 JSON 字符串,例如

    {"bindings": [ {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
    {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"}, 
    {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"} ] } I 

按如下方式检索它:

var fillDataMasterTable = $.ajax({          
    url: "/php/PrepareGoogleDataTable.php" +"?"+
                "SensorString="+SensorString + "&"+
                "TableType=" + TableType +"&"+
                "NoAbscissaBins=" + NoAbscissaBins + "&"+
                "DataTableName=" + DataTableName +"&"+
                "TimeUnit=" + TimeUnit +"&"+
                "TimeStart=" + TimeStart,          
    dataType:'json',          
    async: false          
    }).responseText;    

 $('#debug_div').html(fillDataMasterTable);

这很好,我得到了我的 JSON 字符串。但是我怎样才能访问各个值呢?我试过了:

          $('#debug_div').html(fillDataMasterTable.bindings);

但那是行不通的。我当然在这里做了一些非常愚蠢的事情,我有点羞愧 - 但我确实需要一些帮助才能让自己开始......

【问题讨论】:

    标签: javascript ajax json object


    【解决方案1】:

    reponseTextXMLHttpRequest对象的属性,请求后不会是JSON对象,而是String。而且不管你指定"dataType""json".

    所以你需要将它转换为json对象:

     fillDataMasterTable = JSON.parse(fillDataMasterTable);
    

    然后您可以访问如下属性:

     fillDataMasterTable.bindings
    

    【讨论】:

    • @user1042031 我已经通过我的回答解决了 OP 的问题。其他的东西(访问对象)太简单了。
    • 感谢工程师,它起作用了——你拯救了我的心理健康!但是,对于我自己的教育,我仍然不明白 Ajax 指定 dataType:'json' 选项的意义,如果该选项不影响结果的话。哪些情况下 dataType 变得相关?不管怎样,我原来的问题已经解决了。
    • @aag "Which are the situations in which dataType becomes relevant?" 的答案很简单。 “当你使用 success:function(data) 回调 $.ajax 时”。 “为什么?”。“因为在将data 传递给success 回调之前,jQuery 将该数据转换为dataType 选项指定的适当类型”。
    【解决方案2】:

    像这样使用 Jquery:

    $.each(fillDataMasterTable.bindings, function(i, object) {
                $.each(object, bindings(property, value) {
                    $('#debug_div').html(value);
                });
            });
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 2017-02-27
    相关资源
    最近更新 更多