Javascript处理JSON
这看起来很奇怪……
我有一些JSON ……
{"firstName":"David","lastName":"Smith","email":null,"id":0}
但是当我尝试解析它并将其与…一起使用时
$(document).ready(function() { var json = $.getJSON('userManagement/getUser'); $("p").text(json.firstName); }); This is the user management view Users :
什么都没有出现,但如果我只做$(“p”)。text(json); 它告诉我它是一个对象,我可以看到JSON在firebug中是正确的,任何想法?
尝试:
在AJAX请求完成后,您必须使用json
变量。
在此处了解有关AJAX JSON请求的更多信息: http : //api.jquery.com/jQuery.getJSON/
在此处了解有关常规AJAX请求的更多信息: http : //api.jquery.com/jQuery.ajax/
$.getJSON()
函数只是一个围绕AJAX调用的包装器; 它不会返回由于AJAX调用而获得的JSON,而是返回一个jqXHR对象(感谢Mathletics澄清这一点)。
您需要提供一个回调函数来执行您需要的任何JSON处理。
$.getJSON()
是异步的 – 它不返回JSON。
您需要提供回调函数 ,使用:
$.getJSON(url, callback);
要么
var jqxhr = $.getJSON(url); jqxhr.done(success_callback); // will be passed the JSON jqxhr.fail(error_callback); // will be called if there's an error
后者更灵活,因为您还可以注册错误回调,原始$.getJSON
方法不支持。
您需要使用回调函数,因为您异步检索数据。
你调用$("p").text(json.firstName);
的那一刻$("p").text(json.firstName);
尚未加载JSON。
这就是你必须使用的原因:
$.getJSON('userManagement/getUser',function(json){...your code here... }<-callback