2012-07-06 66 views
0

我很熟悉PHP,但我是一名AJAX初学者,JSON让我疯狂。从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); 

但这只是不起作用。当然,我做一些愚蠢的一败涂地这里,我有点惭愧 - 但我确实需要一些手把手地让自己开始..

回答

4

reponseText是一个属性XMLHttpRequest对象,它不会是请求后的JSON对象。它将是String。并且它不会改变,无论您指定"dataType""json"

所以,你需要将其转换成JSON对象:

fillDataMasterTable = JSON.parse(fillDataMasterTable); 

,然后就可以像这样访问属性:

fillDataMasterTable.bindings 
+0

+1,但OP是要求个人价值不是吗? – 2012-07-06 20:35:36

+0

@ user1042031我通过回答解决了OP的问题。其他的东西(访问对象)太简单了。 – Engineer 2012-07-06 20:39:39

+0

感谢工程师,它的工作原理 - 你拯救了我的心理健康!不过,对于我自己的教育,如果所述选项不影响结果,我仍然不明白指定'dataType:'json''选项的Ajax的意义。 dataType变得相关的情况是哪些?尽可能地解决我最初的问题。 – aag 2012-07-07 05:16:01

1

使用jQuery这样的:

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

使用此之后你解析如上所述通过@Engineer – 2012-07-06 20:36:45

+0

user1042031说,这个回复是针对你的[**删除SO问题**](http://webcache.googleusercontent.com/search?q=cache:stackoverflow.com/questions/11383338/jsfiddle-javascript-block)。我只会提到这个链接可能会帮助你[**了解更多关于jsFiddle **](http://neverindoubtnet.blogspot.com/2012/07/jsfiddle-in-6-minutes.html)。干杯! – arttronics 2012-07-08 20:24:54