我很难在jQuery中处理值,因为大多数jQuery都是在外部脚本中完成的,而且我不确定我什么时候在函数中而不是在函数中,所以#&#it# 39;很难判断全局变量何时设置而未设置。
这个特别令我感到困惑,而且我完全难以理解,从逻辑上讲它应该有用,但似乎有某些东西限制它,并且无视我试图的价值观存储。
我已经得出结论,因为我遇到的错误是在第二次getJSON电话中,我得到了一个' val'未定义的问题,但Javascript控制台没有显示任何javascript错误,只是在我登录到控制台时获取未定义的日志,并在警报中打印对象。
只需要一副清新的眼睛,觉得这可能是一件简单的事,但我一直在看代码这么久以至于我无法理解它。
非常感谢任何帮助。
var post_ids = new Array();
var i = 0;
var val;
$.getJSON("/client-ajax/last-ten-posts.php", function(data){
$.each(data, function(k, val) {
post_ids.push(val.id);
});
});
$.getJSON("/client-ajax/last-ten-posts.php?post-id=" + post_ids[0], function(val){
alert(val.title+"");
$("#postContainer").empty();
$("#postContainer").append("<p class='title'>" + val.title + "</p><div class='post-icon'></div><pre>" + val.content + "</pre><p class='footnote'>Posted by " + val.firstname + " " + val.surname + " at <time datetime='2014-06-10'>08:52</time> GMT+00 on the <time>10-06-2014</time></p>");
});
更新:
我根据@ N0ir的回答略微编辑了代码,但没有成功。 done方法确保在异步过程完成后执行操作,但尽管如此,val仍未定义。我试过的代码在下面进行检查和传播。
$.getJSON("/client-ajax/last-ten-posts.php", function(data){
$.each(data, function(k, val) {
post_ids.push(val.id);
});
}).done(function(){
$.getJSON("/client-ajax/last-ten-posts.php?post-id=" + post_ids[0], function(val){
alert(val.title+"");
$("#postContainer").empty();
$("#postContainer").append("<p class='title'>" + val.title + "</p><div class='post-icon'></div><pre>" + val.content + "</pre><p class='footnote'>Posted by " + val.firstname + " " + val.surname + " at <time datetime='2014-06-10'>08:52</time> GMT+00 on the <time>10-06-2014</time></p>");
});
});
更新 - 网络JSON回电:
GET http://*****************.com/client-ajax/last-ten-posts.php [HTTP/1.1 200 OK 154ms]
GET http://*****************.com/img/home.jpg [HTTP/1.1 304 Not Modified 152ms]
GET http://*****************.com/img/about.png [HTTP/1.1 304 Not Modified 142ms]
GET http://*****************.com/img/about-repeat.jpg [HTTP/1.1 304 Not Modified 147ms]
GET http://*****************.com/img/blog.jpg [HTTP/1.1 304 Not Modified 146ms]
GET http://*****************.com/img/portfolio.jpg [HTTP/1.1 304 Not Modified 210ms]
GET http://*****************.com/img/contact.jpg [HTTP/1.1 304 Not Modified 209ms]
GET http://*****************.com/client-ajax/last-ten-posts.php [HTTP/1.1 200 OK 207ms]
答案 0 :(得分:0)
你想做这样的事情:
var post_ids = new Array();
var i = 0;
var val;
$.getJSON("/client-ajax/last-ten-posts.php", function(data){
$.each(data, function(k, val) {
post_ids.push(val.id);
});
$.getJSON("/client-ajax/last-ten-posts.php?post-id=" + post_ids[0], function(result){
alert(result.title+"");
$("#postContainer").empty();
$("#postContainer").append("<p class='title'>" + result.title + "</p><div class='post-icon'></div><pre>" + result.content + "</pre><p class='footnote'>Posted by " + result.firstname + " " + result.surname + " at <time datetime='2014-06-10'>08:52</time> GMT+00 on the <time>10-06-2014</time></p>");
});
});
这样第二个getJSON调用就会在第一个调用完成后发生。
答案 1 :(得分:-1)
所以我发现了问题,结果是php的PDO中的fetchAll()返回一个数组,所以当从数组创建JSON时,需要通过数组的第一个元素访问JSON,如下所示:
val[0].content
而不是:
val.content